Как сделать запросы выбора PDO HTML безопасными? - PullRequest
1 голос
/ 01 ноября 2010

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

В тестовой среде я вставил некоторые коды HTML в базу данных.Например:

<a href="google.com">Google</a>
<b>Bold text</b>
<u>Underlined text</u>

и т.д ...

Я пробую это, потому что я использую простой WYSIWYG-редактор на своем сайте для пользователей, и я хочу быть уверен, чтоданные безопасны.

Используя следующее:

$stmt = $dbh->prepare("SELECT * FROM naruto WHERE id = :id AND name = :name");

/*** bind the paramaters ***/
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->bindParam(':name', $name, PDO::PARAM_STR, 5);


/*** execute the prepared statement ***/
$stmt->execute();

/*** fetch the results ***/
$result = $stmt->fetchAll();

/*** loop of the results ***/
foreach($result as $row)
    {
    echo $row['id'].'<br />';
    echo $row['name'];
    echo $row['image'];
    }

Где name - это разные коды HTML, HTML просто выполняется.Таким образом, текст выделен жирным шрифтом, а не в формате текста .

Мне интересно, есть ли функция для PDO, чтобы остановить это.Или мне просто нужно использовать htmlentities и strip_tags?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 01 ноября 2010

Использование параметризованных запросов защитит вашу базу данных от неверных данных.Он не защитит ваш HTML, так как это совершенно другой слой.

Если вы хотите разрешить некоторый HTML, вам нужно запустить данные (непосредственно перед тем, как вы отобразите их напользователь) через что-то, что будет белый список HTML, который вы хотите разрешить.

Я считаю, Очиститель HTML является одним из инструментов выбора для пользователей PHP, желающих сделать это.

1 голос
/ 01 ноября 2010

Базы данных не особенно заботятся о том, являются ли хранящиеся в них данные разметкой HTML или нет, равно как и слои абстракции базы данных, такие как PDO ... это всего лишь строка, если они заинтересованы.Вы должны обрабатывать данные в виде HTML или обычного текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...