Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] передача кавычек в XmlHttpRequest (http://forum.oszone.net/showthread.php?t=129847)

harrique 25-01-2009 20:07 1019149

передача кавычек в XmlHttpRequest
 
Через 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 1019468

передавайте кавычки через \" - тогда будут передаваться.

Coutty 26-01-2009 08:11 1019575

Да хоть даже в Base64 кодировать, а потом перед проверкой декодировать.

Sham 26-01-2009 08:29 1019582

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


Время: 17:30.

Время: 17:30.
© OSzone.net 2001-