12行のJSコードのDoS攻撃解析と防御を詳しく解説
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。
