JavaScriptとPHPで掲示板を作っています。
コメントの入力値を安全に受け取って安全に出力したいので、エスケープすべきタイミングを知りたいのですが、次の流れであっていますか?
###コメントの投稿と出力の流れ
➀JavaScriptからPHPへコメントをPOSTする際はエスケープ不要
➁PHPでその $_PSOT['comment_str'] というコメントを次のようにエスケープする
php
1$comment_str = filter_input(INPUT_POST, 'comment_str', FILTER_SANITIZE_SPECIAL_CHARS);
➂データベースにinsertする値も次のようにそのまま$comment_strを渡しエスケープ不要
MySQL
1$query = "insert into comments ( comment_str ) ( {$comment_str} )";
➃コメントの出力時は、XSSを防止するために以下を通してエスケープする
JavaScript
1// AJAXでデータベースから取得した値 2var json = { 3 0: { 4 author: 'Aさん', 5 comment: 'こんにちは' 6 }, 7 1: { 8 author: 'Bさん', 9 comment: '<p>さようなら</p>' 10 }, 11}; 12 13// ループでエスケープしながら出力 14for (var item in json) { 15 var obj = json[item]; 16 var comment = obj.comment 17 var comment = escStr(comment); 18 $('ul').append('<li>' + comment + '<li>'); 19} 20 21// エスケープ関数 22function escStr(str){ 23 return str.replace(/&/g,"&") 24 .replace(/"/g,""") 25 .replace(/'/g,"'") 26 .replace(/</g,"<") 27 .replace(/>/g,">"); 28}
ざっとこちらの流れで実装したところなのですが、何かたりない部分ございませんでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/08 09:26
2020/10/08 10:13