Оказывается, что mysql_real_escape_string () довольно тривиально. Согласно документации :
mysql_real_escape_string () вызывает библиотечную функцию MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \ x00, \ n, \r, \, ', "и \ x1a.
Звучит довольно просто, на самом деле. Вы можете сделать что-то вроде этого:
function mysql_real_escape_string (str) {
return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
switch (char) {
case "\0":
return "\\0";
case "\x08":
return "\\b";
case "\x09":
return "\\t";
case "\x1a":
return "\\z";
case "\n":
return "\\n";
case "\r":
return "\\r";
case "\"":
case "'":
case "\\":
case "%":
return "\\"+char; // prepends a backslash to backslash, percent,
// and double/single quotes
}
});
}
ПРИМЕЧАНИЕ :Я не проводил это ни через какие-либо юнит-тесты или тесты безопасности, но, похоже, он работает - и, в качестве дополнительного бонуса, он экранирует вкладки, пробелы и «%», поэтому его также можно использовать в LIKE.запросы в соответствии с рекомендациями OWASP (в отличие от оригинала PHP).
Я знаю, что mysql_real_escape_string()
распознает набор символов, но я не уверен, какую пользу это дает.
Хорошее обсуждение этих вопросов здесь .