Мне было интересно, какова лучшая практика на примере ниже.
<?php if(isset($_POST['query'])){ $out = $_POST['query']; } ?> <div><?php echo $out; ?></div> <input type="text" value="<?php echo $out; ?>" />
Используя приведенный выше код, это создаст угрозу для веб-сайта. Или мне нужно будет подготовить выход перед его использованием, как указано выше. Подготовившись, я имею в виду кодирование или исключение специальных символов.
Я знаю, что вам нужно сбежать от него и проверить входные данные для использования db, как насчет вывода?
Да, поскольку вы размещаете его в HTML, вы должны соответствующим образом кодировать специальные символы HTML с помощью htmlspecialchars
:
if (isset($_POST['query'])) { $out = htmlspecialchars($_POST['query']); }
Кроме того, $out
определяется только тогда, когда существует $_POST['query']
; вы должны думать о наличии значения по умолчанию, если $_POST['query']
не существует. Поскольку в противном случае, когда глобальные регистры включены (это само по себе является плохой идеей), вы можете установить эту переменную через строку запроса URL-адреса с помощью ?out=…
Да, вы должны использовать функцию php htmlspecialchars http://php.net/manual/en/function.htmlspecialchars.php
также, см. это (принятый ответ)
Должны ли htmlspecialchars и mysql_real_escape_string сохранить код PHP безопасным от инъекции?
не знаю о лучшей практике и что зависит от кодера я люблю
echo (isset($_POST['query']))? htmlspecialchars($_POST['query']):"";