POST var в bindParam

Безопасно или нет использовать переменную POST, как показано ниже:

$stmt->bindParam(':'.$_POST[$field],$val);

или мне нужно проверить POST VARS раньше?

1

Решение

Вы должны использовать переменные $ _POST в качестве значение, не имя параметра.

Переменная $ _POST может содержать пробелы или другие символы, которые не являются допустимыми частями имени параметра. Я обеспокоен тем, что если вы делаете то, что вы показываете, что вы сформировали SQL-запрос, как это:

$sql = "SELECT * FROM mytable WHERE mycolumn = :" . $_POST[$field];

Который определенно не безопасно.

И нет никаких причин для того, чтобы имена параметров были установлены для пользовательского ввода таким образом. Имена параметров должны быть зафиксированы вами, программистом:

$sql = "SELECT * FROM mytable WHERE mycolumn = :myparam";

Затем вы связываете, используя то же имя. Кстати, если вы используете достаточно свежую версию PHP, вам не нужен префикс двоеточия в вызове bind. Вам нужно только это в SQL.

$stmt->bindParam("myparam", $_POST[$field]);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]