2015-08-30 2 views
0

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

filter_input(INPUT_POST, 'x', FILTER_SANITIZE_STRING) 

проблема в том, что я из Литвы, и здесь у нас есть некоторые довольно странные письма например ą č ę ė į š ų ū, и мне нужны те, которые нефильтрованы, я не могу найти другой фильтр FILTER_SANITIZE_, который бы работал, есть ли какие-нибудь? и если нет другой функции, которая делает это так, как мне нужно?

+1

Каковы ваши намерения с санированием? Чтобы остановить инъекции SQL или инъекции XSS позже? В подготовленных операциях следует позаботиться о внедрении SQL. – chris85

+0

i фильтр, поэтому вход идет в базу данных чистым, поэтому мне не нужно беспокоиться, когда я хочу его отобразить, это больше для части XSS – Casad

+0

Я отправляю ее в БД, а затем использую http://php.net/manual/en /function.htmlspecialchars.php, чтобы отобразить его на вашей странице с помощью 'ENT_QUOTES'. – chris85

ответ

1

Решение: Не фильтровать.

HTML кодируется при выводе на HTML-страницу.

например. & будет &amp;, < будет &lt;.

Используйте htmlentities для этого.

Код HTML не опасен в вашей базе - это опасно, когда пользовательский ввод выводится без кода.

Поскольку вы уже используете подготовленные операторы, вы уже защищены от SQLi (при условии, что какой-либо конкатенации запросов не происходит никуда, например, в пределах любых вызовов, которые вы вызываете).

+0

2nd'd, при таком подходе вы не рискуете потерять введенные пользователем данные. Выходной фильтр всегда можно отрегулировать, если проблема обнаружена по линии – andrew

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