Безопасность скриптов → Защитим свои скрипты
Предлогаю Вашему вниманию некоторые простые но эффективные способы защиты от sql-инъекций, xss, php-inj при написании php скриптов, а также как дополнительно обезопасить готовые движки. Следуя этим примерам, Вы сможете избежать распространенных ошибок.
Как известно, простейшая уязвимость начинаетcя с такого URL:
site.com/index.php?id='5
Появляется ошибка и пошло поехало… xss начинается с этого:
site.com/index.php?id=5"><script>alert(xss)</script>
Если не проверять входные данные Ваши скрипты станут совсем беспомощными.
В идеальном случае каждый текстовый входной параметр должен проверяться следующим образом:
$text = trim($text); $text = htmlspecialchars($text, ENT_QUOTES); $text = addslashes($text);
Сначала строка тримуется (удаляются пробелы в начале и конце), затем идет преобразование специальных html символов для защиты от xss, ENT_QUOTES позволяет также заменить одинарные кавычки, ну и напоследок, для страховки, еще и выполняется экранирование спец. символов (addslashes).
Именно в таком виде лучше всего хранить данные в БД. При извлечении нужно выполнить обратное преобразование экранированию:
$text = stripslashes($text);
И затем можно подавать пользователю данные.
Что же касается строго числовых данных (только целых), то тут рекомендуется сразу обрабатывать их так и только так:
$val = intval($val);
Благодаря этой грубой силе в переменной будет либо целое число, либо пустая строка. Одним махом и от sql-inj и от xss.
Если у Вас есть готовый движок (та же джумба), но Вы в нем сомневаетесь (нормальное явление), то для защиты от sql-inj (только от нее) есть такая вещь как magic_quotes_gpc. Для того чтобы ее включить надо в php.ini прописать
magic_quotes_gpc on
И перезапустить сервер. Если Ваш сайт на хостинге можно попросить хостера перенести сайт на сервер где эта magic_quotes_gpc включена, если у хостера специально есть такой сервер где держатся сайты где эта штуковина включена, Ваш сайт может быть перенесен.
Итак. Что делает эту штуковина? Автоматечески экранирует ВСЕ входные параметры, тобеж перед каждой кавычкой добавляет слэш («). Это и защищает ваши скрипты от sql-inj, но надо быть осторожным, если в движке не предусмотрена обработка этой директивы, то параметр может экранироваться дважны («), что не есть хорошо. Надеюсь, в Вашем движке это предусмотрено, иначе нужно самостоятельно прописать ее обоработку в скриптах.
Делается это так:
if(!get_magic_quotes_gpc())
{
$_POST[text] = mysql_escape_string($_POST[text]);
}
Проверяется, если get_magic_quotes_gpc включена, то строка дополнительно не экранируется.
Вывод: использовать get_magic_quotes_gpc стоит, если ее обработка предусмотрена в Ваших скриптах, либо в Ваших скриптах вообще нет никакой обработки -)
Теперь пару слов о php-inj. Несмотря на кучу красивых запросов в гугл для поиска сайтов с этой уязвимостью, которые можно найти на форумах, и красивые приемы заливки шелла через php-inj, защита от этого элементарна — Не применять в инклудах динамически подставляемые переменные. Просто НЕ применять. Придумайте что-то другое, пусть пострадает супер-функциональность Вашего скрипта, но не нужно подставлять в файлы которые инклудятся названия которые вы получаеете как входные данные.
Пример нормального инклуда:
require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/file.php');
Вот и вся защита. Теперь никто не зальет шелл на Ваш сайт.
Теперь пару слов о фильтрах. Я не рекомендую их применять вообще, лучше применять только обработку, которая описана выше. Фильтры обрабатывают входные данные, заменяя или удаляя лишь определенные символы, комбинации, слова, например «sctipt», но вы не знаете наверняка можно ли обойти Ваш фильтр. Фильтры часто обходятся тем или иным способом, и в большинстве случаев лучше их избегать, особенно в тех случаях когда можно обойтись без них.
Статья с сайта: hacker-pro.net
Оставляйте комменты, буду рад всем….
PS: всевозможные варианты аренды жилья — где, как и за сколько можно снять/сдать комнату в Москве.
Если Вам понравилась эта статья,
!
Comments
-
http://dveri-triton.com.ua Бронедвери
-
http://tech-guide.ru/ Сергей
-
http://www.adijuh.com adijuh
-
http://e-sonnik.ru Соня
-
http://biznesvmire.ru/ biznesvmire
-
http://onlineshop.mk.ua/ Свят
-
postlicense
-
Стиль
  Наши сообщества
  Хак новости
  Меню
  Метки


