2009-09-22 3 views
3

Я только что узнал об ускользающих вещах и начал читать о том, как можно рисковать использовать $_SERVER['HTTP_HOST'] из-за атак XSS.

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

htmlspecialchars(
    filter_var($_SERVER[ 'HTTP_HOST' ], FILTER_SANITIZE_URL), 
    ENT_QUOTES, 'UTF-8' 
) 

Все ли в порядке?

Так много зависит от того, какая эта переменная является безопасной, я просто должен был попросить ввода.

EDIT:

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

ответ

3

Различные выделяющиеся функции должны быть использованы в различных ситуациях, например:

  • urlencode для элементов, которые будут сброшены в строке запроса в <a> тега, то есть. echo '<a href="index.php?foo=' . urlencode($foo) . '">'; (смотри также http_build_query)
  • mysql_real_escape_string для переменных, идущих в SQL заявление (хотя я предпочитаю привязки переменной)
  • htmlentities для строк, которые необходимо отобразить пользователю, что, возможно, есть HTML в пределах (см также strip_tags)
3

Это зависит от того, что вы хотите использовать для. Если вы хотите отобразить его, используйте htmlspecialchars. Если вы хотите использовать запрос базы данных, вы можете использовать mysql_real_escape_string в случае mysql. (Или подготовленные заявления)