Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

входные данные PHP

входные данные  PHP

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

И рассмотрим следующий пример:

<!DOCTYPE>
<html>
<head>
    <meta charset="utf-8">
    <title >
        Специальные функции
    </title>
</head>
    <body>
    <?php
        $script = "<script> alert('Привет'); </script>";
        echo $script;
    ?>
    </body>
</html>

здесь при выполнении js скрипта сценарий которого записан в переменную выводится модальное окно alert(). И теперь только представьте себе, что если пользователь запишет в базу какой либо js -сценарий при регистрации, комментарии и т.п. , и мы в каком нибудь месте для указания его выведем на страницу?! Я думаю что последствия могут быть крайне неприятными. Поэтому если мы хотим вывести на страницу данные пришедшие от пользователя, то их лучше обработать функцией htmlspecialchars ().

$script = "<script> alert('Привет'); </script>";
    echo htmlspecialchars($script);

данная функция экранирует специальные символы в результате чего наш js-сценарий был отображен в виде обычной строки. Обратная функция htmlspecialchars_decode() убирает экранирование специальных символов.

Следует учитывать что функция htmlspecialchars() может принимать еще два необязательных параметра:

Одну из трех констант (ENT_COMPAT - Преобразует двойные кавычки стоит по умолчанию , ENT_QUOTES - Преобразует и двойные, и одиночные кавычки, ENT_NOQUOTES - преобразует двойные кавычки) и кодировку используемую при преобразовании.

$script = "<script> alert('Привет'); </script>";
echo htmlspecialchars($script,ENT_QUOTES,'UTF-8');

как видите здесь ничего сложного нет.

Едем дальше. У функции htmlspecialchars() есть аналогичная функция htmlentities (). Она принимает те же параметры и по виду также работает:

$script = "<script> alert('Привет'); </script>";
echo htmlentities($script,ENT_QUOTES,'UTF-8');

но имеет свои особенности в том что обрабатывает все спец. символы html-представления в отличии от htmlspecialhars() в которой производится выборочная трансляция.

С помощью функции strip_tags() мы можем убирать из наших строк html -теги:

$script = "<script> alert('Привет'); </script>";
echo strip_tags($script);

как видите тег script был после обработки фукцией strip_tags() был удален. Данной функции мы можем передавать третий необязательный параметр а, именно строку с перечислением тегов которые хотим чтобы функция не удаляла пример:

$script = "<script> alert('<b>Привет</b>'); </script>";
echo strip_tags($script,'<b>');

здесь как видите мы указали что тег b мы не будем удалять. Если тег не один:

$script = "<script> alert('<b>Привет<span style=\"color:red;\"> Мир!</span></b>'); </script>";
echo strip_tags($script,'<b><span>');

Далее я хотел бы окцентировать ваше внимание на функции trim() которая позволяет убирать все пробели из начала и конца строки.

$text = " Привет ";
echo "'".trim($text)."'";

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

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

$password = "1234";
echo $password;

здесь мы видим банальный пароль, и посмотрим что будет после обработки md5():

$password = "1234";
echo md5($password);

после обработки мы получили хеш 81dc9bdb52d04dc20036dbd8313ed055 и именно в таком виде будет хранится пароль 1234 в базе данных. По сути в базе будет храниться не сам пароль, а его хеш.

Что вы должны знать об md5()? Во первых обратной функции здесь нет, то есть мы не можем преобразовать наш хеш 81dc9bdb52d04dc20036dbd8313ed055 обратно в 1234. Во вторых в независимости от длины вашего пароля хеш будет состоять из 32 символов цифр и букв. В третьих хеш для каждой последовательности символов не меняется, что не помешает подобрать его.

Данную функцию в основном используют для хранения паролей в базе данных.

На этом дорогие друзья у меня на сегодня все. Надеюсь вы смогли узнать сегодня что то новое.

А я с вами прощаюсь и желаю успехов!

Оцените статью:

Статьи

Комментарии

Внимание!!! Комментарий теперь перед публикацией проходит модерацию

Все комментарии отправлены на модерацию

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm