Итак, я знаю о введении MySQL и всегда избегаю всех своих пользовательских вводных данных перед тем, как поместить их в свою базу данных. Однако мне было интересно, представьте, что пользователь пытается отправить запрос для ввода, и я убегаю. Что делать, если я в последующий момент беру это значение из базы данных и использую его в запросе. Должен ли я снова избежать этого?
Итак: (sql::escape()
содержит мою функцию escape)
$userinput = "'); DROP `table` --";
mysql_query("INSERT INTO `table`
(`foo`,`bar`)
VALUES
('foobar','".sql::escape($userinput)."')");
// insert php/mysql to fetch `table`.`bar` into $output here
mysql_query("INSERT INTO `table2`
(`foo`,`bar`)
VALUES
('foobar','".$output."')");
Может ли MySQL автоматически выходить из своего вывода или что-то в этом роде, или я должен избежать второго запроса?
Это тестовый файл, но это происходит в некоторых других способах моей программы, и мне интересно, насколько жесткой должна быть безопасность для таких случаев.
ИЗМЕНИТЬ
Моя функция escape
static function escape($string){
if(get_magic_quotes_gpc())
$string = stripslashes($string);
return mysql_real_escape_string($string);
}