Полный цикл в digital

Безопасность данных

Большое значение в PHP имеет организация безопасности данных. Рассмотрим несколько простых механизмов, которые могут повысить безопасность нашего веб-сайта. Но вначале возьмем форму из прошлой темы:

<!DOCTYPE html>
<html>
<head>
<title>hmarketing.ru</title>
<meta charset="utf-8" />
</head>
<body>
<?
$name = "не определено";
$age = "не определен";
if(isset($_POST["name"])){
$name = $_POST["name"];
}
if(isset($_POST["age"])){
$age = $_POST["age"];
}
echo "Имя: $name <br> Возраст: $age";
?>
<h3>Форма ввода данных</h3>
<form method="POST">
<p>Имя: <input type="text" name="name" /></p>
<p>Возраст: <input type="number" name="age" /></p>
<input type="submit" value="Отправить">
</form>
</body>
</html>

И попробуем ввести в нее некоторые данные. Например, введем в поле для имени <script>alert(hi);</script>:

Получим следующий вывод:

После отправки данных в html разметку будет внедрен код javascript, который выводит окно с сообщением.

Это относительно простой и безвредный скрипт. Однако внедряемый код может быть более вредоносным. И чтобы избежать подобных проблем с безопасностью, рекомендуется применять функцию htmlentities(). В качестве параметра она принимает значение, которое надо экранировать:

<?
$name = "не определено";
$age = "не определен";
if(isset($_POST["name"])){
$name = htmlentities($_POST["name"]);
}
if(isset($_POST["age"])){
$age = htmlentities($_POST["age"]);
}
echo "Имя: $name <br> Возраст: $age";

И даже после ввода кода html или javascript все теги будут экранированы, и мы получим следующий вывод:

Еще одна специальная функция - htmlspecialchars() похожа по действию на htmlentities:

<?
$name = "не определено";
$age = "не определен";
if(isset($_POST["name"])){
$name = htmlspecialchars($_POST["name"]);
}
if(isset($_POST["age"])){
$age = htmlspecialchars($_POST["age"]);
}
echo "Имя: $name <br> Возраст: $age";

Еще одна функция - функция strip_tags() позволяет полностью исключить теги html:

<?
$name = "не определено";
$age = "не определен";
if(isset($_POST["name"])){
strip_tags($_POST["name"]);
}
if(isset($_POST["age"])){
strip_tags($_POST["age"]);
}
echo "Имя: $name <br> Возраст: $age";

Результатом ее работы при том же вводе будет следующий вывод:

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг