PHP $ _SERVER ['HTTP_HOST'] экранирует, это выглядит приемлемым? - PullRequest
3 голосов
/ 22 сентября 2009

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

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

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

Это выглядит хорошо?

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

EDIT:

Я буду использовать это для отображения по всему сайту, включая основные anchor-hrefs, form-action и т. Д.

Ответы [ 2 ]

3 голосов
/ 23 сентября 2009

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

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

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

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