想定してみたサイトページ
1.テキストエリアにユーザーが文字を入力できます。
2.「実行」というボタンを押すと、テキストエリア内の文字をJavascriptで取得して、「エスケープ処理をせずに」ページ内に挿入・表示します。
// html <textarea id="user-text">ここにユーザーは文字を入力</textarea> <button id="action">実行</button> //jQuery $('#action').click(function(){ //実行をクリックしたとき var user_text = $('#user-text').val(); //textarea内のvalueを取得 $('#user-text').after('<div>'+ user_text + '</div>'); //ユーザーの入力した値をエスケープせずにdiv要素として挿入・表示 });
疑問点
不特定多数のユーザーが入力した値をDBに保存した後、表示するときにエスケープなどの適切な処理を行わないと脆弱性になるという認識はあります。
また、私は今まで、ユーザーがテキストエリアに入力した値をJavascript等でその場で画面に再表示するときにはエスケープ処理を行い、ユーザー側が書き込んだJavascriptなどは実行されないようにしていましたが、ふと、この場合のエスケープ処理にどのくらい意味があるのだろうと気になりました。
ページ上で任意のJavascriptを実行されるとどのような危険があるのかがわかれば、とても勉強になると思い、質問いたしました。
どなたかお分かりになる方がいらっしゃいましたら、お教えいただけましたら幸いです。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/16 09:39
2022/06/17 02:15
2022/06/21 03:15