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;
}
Так вот, при передаче текста, содержащего двойные кавычки, строка сохраняется в базе со слешами. Если передавать одинарные кавычки, то тест вообще обрезается до первой кавычки. Собственно, вопрос в том как передавать произвольный текст, что бы еще и защитится от инъекций. Поделитесь опытом с новичком, пожалуйста.
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;
}
Так вот, при передаче текста, содержащего двойные кавычки, строка сохраняется в базе со слешами. Если передавать одинарные кавычки, то тест вообще обрезается до первой кавычки. Собственно, вопрос в том как передавать произвольный текст, что бы еще и защитится от инъекций. Поделитесь опытом с новичком, пожалуйста.