Войти

Показать полную графическую версию : [решено] передача кавычек в XmlHttpRequest


harrique
25-01-2009, 20:07
Через XmlHttpRequest передается GET'ом следующая строка:

var params="operation=insert&id_quest="+ <?php echo $get_id; ?> +"&question_text="+encodeURIComponent(question_text);

где параметр question_text - это текст (литиница+кирилица), который может содержать кавычки.

на сервере есть простейшая защита от инъекций:

if(isset($_GET["operation"]) && $_GET["operation"]=="insert" && isset($_GET["id_quest"]) && isset($_GET["question_text"])){


if (iconv("UTF-8","windows-1251",$_GET["question_text"]))

$text=iconv("UTF-8","windows-1251",$_GET["question_text"]);

$text=checkvar($text);

.
.
.

}


Тест функции checkvar:

function checkvar($var){

$var=addslashes($var);

$var=htmlspecialchars($var);

return $var;

}

Так вот, при передаче текста, содержащего двойные кавычки, строка сохраняется в базе со слешами. Если передавать одинарные кавычки, то тест вообще обрезается до первой кавычки. Собственно, вопрос в том как передавать произвольный текст, что бы еще и защитится от инъекций. Поделитесь опытом с новичком, пожалуйста.

Delirium
26-01-2009, 02:03
передавайте кавычки через \" - тогда будут передаваться.

Coutty
26-01-2009, 08:11
Да хоть даже в Base64 кодировать, а потом перед проверкой декодировать.

Sham
26-01-2009, 08:29
не мудрите, есть спец. функция mysql_real_escape_string($string) - используйте ее непосредственно в запросе...




© OSzone.net 2001-2012