jQueryを使用してユーザー名が使用されているかどうかを確認しています。私の問題は、$.post
は何かをエスケープするようです。入力フィールドにユーザ名が"bob"
(引用符付き)の場合は大体でページcheck_username.php
、jQueryが自動的にAjaxをエスケープしています
$username = mysql_real_escape_string($_POST["username"]);
echo $username; // show the perceived username
echo mysql_query("SELECT * FROM users WHERE username=\"".$username."\";") === false ? 1 : 0;
にユーザ名を送信するために
$.post("http://mywebsite.com/check_username.php", {
"username": $("#username_txt").val()
}, function(data, textstatus, xmlhttp){
// do stuff
});
、たとえば、私はこれを使用しますデータからの戻り値は\\\"bob\\\"0
になります。 mysql_real_escape_stringがなければ、\"bob\"
となります。私はそれを残すことを敢えてすれば、潜在的な攻撃者は簡単に私のアプリケーションにSQLコードを注入することができます。
jQueryのドキュメントでこれを取得して投稿したことがありませんでしたので、これをやめる方法がわかりません。私のajaxにjQueryを使用しないでください。どうすれば修正できますか?
だから、あなたは 'bob'が働いていると言っていますが、誰かが' 'bob ''を入力した場合、それはユーザーの問題ではありませんか? –
ユーザーの問題はどういう意味ですか?ユーザー名に引用符を使用しても問題ありませんが、正しくエスケープしたいと思います。結局のところ、名前で登録したときに '\" bob \ "という名前でログインする必要があったのは残念です。" bob "' –