JQuery автоматически выходит из AJAX - PullRequest
0 голосов
/ 29 декабря 2010

Я использую jQuery, чтобы проверить, не занято ли имя пользователя.Моя проблема в том, что $.post, кажется, избегает всего.Например, я использую это:

$.post("http://mywebsite.com/check_username.php", {
    "username": $("#username_txt").val()
}, function(data, textstatus, xmlhttp){
    // do stuff
});

для отправки имени пользователя на страницу check_username.php, что примерно равно

$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;

Если имя пользователя в поле ввода равно "bob" (с кавычками), возврат данных будет \\\"bob\\\"0.Без mysql_real_escape_string это читает \"bob\".Если я осмелюсь оставить это так, то потенциальные злоумышленники могут легко внедрить код SQL в мое приложение.

Я не видел ничего в документации jQuery по поводу получения и публикации об этом, поэтому я не уверенкак это остановить.Если я не использую jQuery для моего ajax, как я могу это исправить?

Ответы [ 4 ]

3 голосов
/ 29 декабря 2010

Вам придется удалить магические кавычки , которые PHP автоматически добавляет к данным $ _GET, $ _POST и $ _COOKIE. Эту устаревшую функцию можно отключить, если весь ваш код PHP правильно экранирует строки перед вставкой их в HTML, SQL, командные строки и т. Д.

1 голос
/ 29 декабря 2010

Компоновка SQL напрямую из сгенерированного пользователем текста самоубийственна.См. здесь , если вы не понимаете, почему.

Составление SQL с использованием mysql_real_escape_string, примененного к пользовательскому тексту, является плохой идеей, поскольку затрудняет оптимизацию запросов (хотя по сравнению с неиспользование mysql_real_escape_string - все равно, что ткнуть себя в шею острым карандашом по сравнению с тряпкой в ​​шею бегущей бензопилой)

1 голос
/ 29 декабря 2010

Вы пробовали свойство processData для $.ajax?

http://api.jquery.com/jQuery.ajax/

0 голосов
/ 29 декабря 2010

Возможно, параметр конфигурации maghic_quotes_gpc включен в файле PHP.ini. Если у вас есть доступ к этому файлу, измените значение на off.

Если у вас нет доступа, используйте функцию get_magic_quotes_gpc, чтобы увидеть, включено ли magic_quotes, если нет, тогда вызовите функцию mysql_real_escape_string, иначе обойдя ее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...