2012-06-17 3 views
0

Я ищу в WordPress плагин, и он имеет форму с полем ввода, как это:Как предотвратить SQL-инъекцию для полей ввода?

<input type="text" name="user_email" id="email1" value="'.strip_tags($_POST['user_email']).'" class="short" tabindex="2" /> 

Так strip_tags в стоимостном выражении это означает, что все представленные через этот вход будет тег полосатые? против SQL-инъекции?

Не следует ли, чтобы эта мера безопасности была реализована в целевом файле этой формы?

У меня возникли проблемы с пониманием, если это будет какой-либо помощи в обеспечении безопасности против SQL инъекций

ответ

0

Это будет тег полосатые только на этот раз (настраиваемое значение для поля ввода HTML - предполагая, что это делается на стороне сервера, когда генерирование содержимого HTML). Вы должны делать то же самое при доступе к базе данных с параметрами.

+0

Думал, что практически это бесполезно для SQL-инъекции. –

2

Во-первых, strip_tags() не защищает от SQL-инъекции. Во-вторых, как указал Франсуа Б, теги будут удаляться только при загрузке HTML-формы. Неважно, что пользователь вводит в форму в своем веб-браузере; вы должны очищать строки после того, как форма была отправлена, но перед выполнением запросов mysql.

Повторяю: strip_tags() НЕ является инъекционным средством против SQL.. Если вы хотите получить почти безупречную защиту от SQL-инъекций, вам нужно изучить подготовленные заявления. В большинстве случаев для защиты от SQL-инъекции достаточно дезактивировать ваш вход с помощью белого списка символов, используя mysql_real_escape_string(), и убедиться, что ваши переменные заключены в одиночные кавычки.

Для нового разработчика слишком легко снимать себя в ногах при использовании PHP и mysql; пожалуйста, сделайте некоторое исследование с Google и обязательно прочитайте http://bobby-tables.com/. Пожалуйста, обратитесь за помощью и попросите кого-нибудь проверить ваш код перед публикацией потенциально уязвимого сценария.

+0

Спасибо, что упомянул http://bobby-tables.com/. Для подобных случаев я создал сайт. Я возьму часть вашего текста из этого комментария и включу его в страницу PHP. –

1

как указано выше, подготовленные заявления являются лучшей защитой от sql-injection.

Среди системных мер я бы добавил брандмауэр приложения mod_security (на уровне Apache, если ваш Wordpress находится на Apache и у вас есть контроль над конфигурацией), это помогает против SQL-инъекций и многих других эксплойтов.

+0

спасибо за подсказку mod_security. –

Смежные вопросы