私の頭はこれで爆発しています。他のユーザーのブラウザーに出力する前に、ユーザーが送信したデータをエスケープするための簡潔なステップバイステップを探しています。
プロセス: 1) ユーザー 1 は、JSON として送信されるテキスト フィールドを含む ajax フォーム (jquery) を送信します。2) PHP は文字列をエスケープし、mysqli_real_escape_string() を使用して DB に配置します。3) ユーザー 2 は、JSON として受信する jquery ajax リクエストを介してデータを要求するページを読み込みます。文字列は、フォームの選択ボックスのオプションとして表示されます。
ユーザー 1 が悪意のある JavaScript または html を送信できないようにしたい - つまり、すべての文字を適切にエスケープしたい。これを達成するための手順についてのガイダンスが欲しいのですが、以下のコードで何を変更する必要がありますか?
フォームの送信時: (エスケープなし)
$.ajax({
url: '/ajax/insert.php', dataType: 'json',
data: {str: $("input").val()}, success: function(){}
)};
DB への PHP の挿入: (エスケープ)
mysqli_query(
"insert into tbl (str) values ('"
.mysqli_real_escape_string($link, $_REQUEST['str'])
."')");
JQueryは文字列を取得し、ドロップダウンに入れます(簡略化)(ここにエスケープを入れますか?):
$.ajax({
url: '/ajax/get.php', dataType: 'json',
data: {},
success: function(json){
$("select").html("<option>" + json.str + "</option>");
}
});
DB から取得するための PHP (ここにエスケープを入れますか?):
$res = mysqli_query($link, "select str from tbl where X");
echo json_encode(mysqli_fetch_assoc($res));
ありがとう