Firefox、Chrome、Safari ブラウザをクラッシュさせる可能性がある 12 行の JavaScript コードがあり、iPhone の再起動や Android のクラッシュも引き起こす可能性があります。この記事の著者は、これらの 12 行のコードを分析および解釈し、対応するコードを提案しました。この方法について議論することを歓迎します。これらの 12 行の JS コードに関する記事は次のとおりです。これらの 12 行のコードはどのようにしてブラウザを爆発させますか?
Ajax と pjax
Ajax は「Asynchronous Javascript And XML」(非同期 JavaScript と XML) で、高速で動的な Web ページを作成するために使用されるテクノロジです。 Ajax を使用すると、バックグラウンドでサーバーと少量のデータを交換することで、Web ページを非同期に更新できます。これは、Web ページ全体を再読み込みしなくても、Web ページの一部を更新できることを意味します。
ただし、Ajax アプリケーションは他の問題も引き起こす可能性があり、ブラウザーが前後に移動できなくなる可能性があり、これは非常に厄介な問題であり、開発者は (非表示の iframe を使用したり、変更したりするなど) 作業負荷を増加させる必要があります。 location.ハッシュ値などのメソッド)を解決します。
従来の Ajax によって引き起こされる問題を解決するために、HTML5 に新しい API であるhistory.pushState が導入されました。Ajax と結合された後、pjax という新しい名前が付けられました。 Ajax+history.pushStateをベースとした新しい技術で、更新せずにページの内容を変更したり、ページのURLを変更したりすることができます。 pjax は Ajax+pushState をカプセル化したもので、ローカル ストレージやアニメーションなどの複数の機能をサポートします。現在、jquery、qwrap、kissy およびその他のバージョンをサポートしています。
HTML5.history.pushState
HTML5 は、pushState インターフェイスと replaceState インターフェイスを通じてブラウザ履歴を操作し、現在のページの URL を変更できます。
pushState は、指定された URL をブラウザ履歴に追加し、現在の履歴ポイントを保存します。 replaceState は、現在の URL を指定された URL に置き換えます。同時に、これらのメソッドは window.onpostate イベントでも機能します。
history.pushState(data, title, url): 履歴スタックの先頭にレコードを追加します。onpopstate イベントがトリガーされると、データがパラメーターとして渡されます。現在のすべてのブラウザーは通常、無視します。このパラメータは、ページ アドレスです(オプション)。デフォルトは現在のページ アドレスです。具体的な詳細:
state: オブジェクトは JavaScript 状態オブジェクトであり、履歴ポイントを記録する追加オブジェクトであり、空にすることもできます。これは、pushState() メソッドによって作成された新しい履歴エンティティに関連しています。履歴に挿入するエントリに関する情報を保存するために使用されます。
title: 将来的に使用される可能性がありますが、通常、すべてのブラウザーはこのパラメーターを無視します。現時点でこれを使用する最も安全な方法は、将来の変更を防ぐために空の文字列を渡すことです。または、状態を表す短いタイトルを渡すこともできます。
URL: このパラメーターは、新しい履歴エンティティの URL を渡すために使用されます。新しい URL は既存の URL と同じドメイン内にある必要があります。そうでない場合、pushState() は例外をスローします。このパラメータはオプションです。空白のままにすると、ドキュメントの現在の URL に設定されます。
12 行のコード分析
上の図は、URL 合計のループです。history.pushState(0,0,total); これは URL を変更し続け、1,000,000 回ループします。履歴スタックにレコードを継続的に追加すると、CPU とメモリの使用率が高くなり、Firefox、Chrome、Safari ブラウザがクラッシュしたり、iPhone が再起動したりする可能性があります。
分析結果
XP仮想マシン(i7シングルコア3.4G、512メモリ)での個人測定:
上記のサイクル数が100,000を超えると、CPUとメモリの使用率は即座に100%になり、その後クラッシュしてフリーズします。
上記のループ数が約 10,000 に減少すると、CPU とメモリの使用量が約 20 秒で 100% まで徐々に増加し、その後クラッシュしてフリーズします。 500 程度になると CPU 使用率が徐々に増加して 100% に達し、192.168.56.106/12.html のページを開くとメモリ使用量が約 130M から約 230M に増加します。 、列内のアドレスも次のように変更されました: 192.168.56.106/0123456789101112131415161718192021...494495496497498499
ループを通じて履歴スタックに新しいレコードを追加する際に、ページが更新されることがわかります。のジャンプの新しいアドレス。これはループ内に蓄積される「疑似アドレス」です。この長さが制限を超えると、攻撃の効果と効率はループの数とターゲットのハードウェア構成に完全に依存します。
関連防御策
皆さんのセキュリティ意識はすでに非常に高いと思いますが、それでも、見知らぬ人から送られてくるリンク、添付ファイル、電子メール、写真などを決して信用しないように警鐘を鳴らす必要があります。もちろん、そうではありません。ゲイや悪友のいたずらは排除しました。頻繁に Ctrl+S を覚えておいてください。そうしないと、行き詰まった場合に非常に落ち込むことになります。
インターネットは誕生以来、ハッカーの攻撃にさらされてきました。初期のハッカーの攻撃は、多かれ少なかれ技術的な実験や誇示を目的としていたものでしたが、世界的なインターネット インフラストラクチャの成長に伴い、接続は無制限に増加しました。ユーザー数の急速な拡大に伴い、ハッカー攻撃の頻度も増加し、ハッカー技術も発展を続け、経済的利益を不法に得ることを目的としたブラック産業チェーンが徐々に出現しました。インターネットのセキュリティ保護の技術レベルは飛躍的に進歩しており、このインターネット時代では攻撃と防御が毎分起こっています。
もちろん、インターネットは情報セキュリティの脅威に満ちています。これらの問題から保護するには、ネットワーク セキュリティの向上にのみ依存するだけでは十分ではありません。無視することが不可欠です。
例: 個人のパスワードの管理に注意する、個人のプライバシーの保護に注意する、公共の Wi-Fi に簡単にアクセスしない、見知らぬ/よく知っている友人からのリンクやファイルを簡単に信頼しない、など。モバイル決済のセキュリティ、デバイスの「ストリーキング」などを待機させないでください。
以上が12行のJSコードのDoS攻撃解析と防御を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
