Лучшая практика для вывода PHP - PullRequest
2 голосов
/ 18 ноября 2010

Мне было интересно, какова лучшая практика на примере ниже.

<?php

if(isset($_POST['query'])){
  $out = $_POST['query'];
}

?>
<div><?php echo $out; ?></div>
<input type="text" value="<?php echo $out; ?>" />

Использование приведенного выше кода представляет угрозу для веб-сайта. Или мне нужно подготовить вывод перед использованием, как указано выше. Под подготовкой я подразумеваю кодирование или экранирование специальных символов.

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

Ответы [ 3 ]

3 голосов
/ 18 ноября 2010

Да, так как вы помещаете его в HTML, вы должны использовать кодирование специальных символов HTML с помощью htmlspecialchars:

if (isset($_POST['query'])) {
    $out = htmlspecialchars($_POST['query']);
}

Кроме того, $out толькоопределяется, когда $_POST['query'] существует;вам следует подумать о наличии значения по умолчанию, если $_POST['query'] не существует.В противном случае, когда регистр глобалов включен (это само по себе плохая идея), вы можете установить эту переменную через строку запроса URL с помощью ?out=….

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

Да, вы должны использовать функцию php htmlspecialchars http://php.net/manual/en/function.htmlspecialchars.php

также, посмотрите это (принятый ответ)

Защищают ли мой PHP-код от внедрения htmlspecialchars и mysql_real_escape_string?

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

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

echo (isset($_POST['query']))? htmlspecialchars($_POST['query']):"";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...