Рубрика | Советы RSS-лента этой рубрики

3 правила обработки данных, введенных пользователем PHP (sanitize user input)

Привет друг!

В этой заметке хочу рассказать тебе 3 Важнейших Правила Нормализации Значений в PHP (англ. sanitize user input), полученных от пользователя. Я сам очень часто обращаюсь к этой заметке, если забываю об этих базовых правилах. Каждый PHP-разработчик должен знать эти 3 функции, когда их нужно применять. И самое главное - применять их!

В PHP нет встроенных функций фильтрации/обработки данных, введенных пользователем. Функция magic_quotes, которая должна была выполнять некоторую обработку, была помечена к удалению в версии PHP 5.3.0, и удалена с версии PHP 5.4.0.

Поэтому, чтобы защитить свои приложения и себя от возможных проблем, надо руководствоваться следующим простым правилом (работает для любого языка):

Если твой скрипт обрабатывает строку, полученную откуда-то "со стороны" (например, ввел пользователь/спарсили из файла и др.), надо приводить эту строку к безопасному виду с помощью спец. функций, доступных для данного языка.

Например, если ты используешь строку, полученную "со стороны", в строке SQL-запроса, то используй специальную функцию для этого mysql_real_escape_string() (с версии PHP 5.5.0 -> mysqli_real_escape_string или PDO->quote).

Или другой пример, если в твоем приложении обрабатывается строка, которая содержит HTML-разметку, то нужно обязательно использовать функцию htmlspecialchars().

Или еще один пример, если ты будешь использовать полученную строку для дальнейшего использования с функцией exec(), то нужно обязательно делать предварительную обработку строки с помощью escapeshellarg() и escapeshellcmd().

И так далее...

обработка данных которые ввел пользователь PHP

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

Успехов вам в создании безопасных приложений!

Богдан Григорук

Как настроить редирект со старого домена на новый WordPress?

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

Также сразу, чтобы не забыть, упомяну про другую важную фишку.

Склеивание домена с www и без.

Допустим у вас есть сайт twog.me, но на него можно попасть через www.twog.me и через просто twog.me. Нужно дать поисковикам ясно понять какой домен у вас первостепенный из этих двух. Чтобы потом не было проблем набором ссылочной массы (например, без склеивания у сайта без www будет тиц 20, а с www - тиц 10 или 0). Об этом читайте мою заметку "как ускорить загрузку сайта wordpress" (предпоследний пункт "Настроить .htaccess").

Код для склеивания доменов (укажи свой домен вместо twog.me):

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.twog\.me$ [NC]
RewriteRule ^(.*)$ http://twog.me/$1 [R=301,L]

Теперь расскажу про редирект со старого домена на новый.

Такой редирект (англ. перенаправление) нужен для того, чтобы, как минимум, сохранить твоих текущих посетителей при смене адреса сайта. А по максимуму, чтобы поисковые боты как можно быстрее поняли, что у твоего сайта изменился домен и исправили старый домен на новый в поисковой выдаче.

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

Итак, решение...

Код для редиректа со старого домена на новый:

Этот код нужно: (код ниже)
- вставить в файл htaccess.txt
- изменить там noviy-adres.ru на адрес твоего сайта
- закачать в папку, к которой привязан старый домен
- потом переименовать в .htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://noviy-adres.ru/$1 [R=301,L]

Выражение [R=301,L] значит, что нужно отправить клиента на новый адрес с кодом 301 (R=301). И это правило выполнить последним (L).

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

Успехов в освоении WordPress!

Богдан Григорук