2010-09-15 2 views
1

У меня есть сайт, написанный на PHP с использованием PDO. Я использую функцию bindParam() для привязки к SQL запроса вставки:PHP и PDO, предотвращающие инъекцию Javascript

("insert into Table (id, date, data) VALUES (?, ?, ?)") 

но я могу вставить строку, содержащую

"<script>window.location="google.com"</script>" 

Как это предотвратить?

Спасибо !!!

ответ

2

PDO не собирается, чтобы остановить вас сделать это. Вы должны сами позаботиться о строке:

  1. Если вы не хотите <script> теги на всех, используйте strip_tags
  2. Если вы хотите, чтобы эти теги, но не хотите их выполнить, а затем использовать htmlentities
0

Предполагая, что вы имеете в виду

<script>window.location="google.com"</script> 

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

Используйте htmlspecialchars() [1] на страницах, отображающих информацию о базе данных.

[1] http://www.php.net/manual/en/function.htmlspecialchars.php

+0

Что вы имеете в виду? Разве я не должен помешать им попасть в БД в первую очередь? –

+0

Ну, вы можете либо фильтровать входные данные в БД, либо фильтровать на выходе в браузер, просто убедитесь, что вы не фильтруете дважды. Мое предпочтение в настоящий момент заключается в фильтрации на выходе, чтобы не иметь БД, замусоренную с HTML-объектами. – Andrew67