В предыдущем посту я немного
Предупреждение: статья рассчитана на новичков, поэтому, если Вы гуру php, можно листать дальше и не писать в комментариях, что тут описываются банальные вещи.
Храните пароли и другие данные в зашифрованном виде
В php есть замечательная функция md5(), которая позволяет в одностороннем порядке получать из Вашей секретной фразы некий набор символов. Например, слово Хабрахабр станет набором 4a8ceaec90d1bf03bb0dee7b34034f7a.
Для дополнительной защиты Вашей секретной строки можно использовать добавочный код для шифровки md5:
$key = "Secret key"; // наша ключевая фраза $str = "Secret str"; // то, что нужно зашифровать $result = $str.$key; // складываем echo md5($result); // используем md5 код от сложения
Таким образом, даже, если злоумышленник доберётся до Вашей базы данных с паролями — он не сможет узнать пароль, перебирая хешы известных фраз.
Так же можно складывать md5 хешы ключевой фразы и строчки, которую нужно зашифровать и брать md5 от их суммы:
$key = md5("Secret key"); $str = md5("Secret str"); $result = $str.$key; echo md5($result);
Защищайте строки от опасных данных
Допустим, у нас есть форма входа на сайт, в которой нужно ввести логин и пароль. А что, если злоумышленник поставит в один из input-ов закрывающую кавычку и дальше напишет свой вредоносный код? В лучшем случае, он получит доступ к базе данных данных, а нам этого бы совсем не хотелось.
Что бы это предотвратить, в php есть функция str_replace():
$str = "Text'"; // Полученный текст с кавычкой echo str_replace("'", "", $str); // Выведет текст без кавычки
Кроме этого, очень часто бывает такое, что нужно избавиться от всех (или не всех) html-тегов. Примером этому может служить форма комментирования на сайте, с помощью которой злоумышленник сможет встроить орденоносный js или сделать другую пакость. Решением этого является функция strip_tags().
С её помощью можно убрать как все теги из текста:
$str = "<b>Text</b>'"; echo strip_tags($str);
Так и оставить разрешенные (например, для создания жирного текста и курсива):
$str = "<b>Text</b>'"; echo strip_tags($str, '<i><b>');
На последок
Эта функция не служит для безопасной отправки данных, скорее наоборот — для безопасного отображения данных: очень часто бывает, что нужно написать некий email на сайте, и не всегда хочется (и есть возможность) делать его в виде картинки. Что бы он не попал в щупальца спам-ботам у php есть хорошая функция chr(), которая закодирует наш email в ASCII-код, и функция ord(), которая раскодирует его обратно.
Для этого напишем функцию:
function secretMail($mail) { $result = ''; $mail = 'mailto:' . $mail; for ($i=0; $i < strlen($mail); $i++) { $result .= '' . ord(substr($mail, $i, 1)) . ';'; } return $result; }
Теперь мы можем ею воспользоваться:
echo '<a href="' . secretMail('mail@domain.com') . '">Secret mail address</a>';
В результате, если посмотреть исходный код страницы мы увидим:
Конечно, это остановить не всех спам-ботов, но какая-то часть всё равно отсеется.
Надеюсь, эта статья поможет совсем новичкам в php не делать глупых ошибок и использовать его безопасно.
ссылка на оригинал статьи http://habrahabr.ru/post/232331/
Добавить комментарий