Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Защита от XSS

#1 r0mZet

r0mZet
  • Модератор
  • 966 сообщений
  • Репутация: 107
0

Отправлено 28 Октябрь 2013 - 11:47

как можно защитить самописный сайт на PHP от XSS ?
какие есть рецепты? =)

 

 

  • 0

#2 alex159

alex159
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 28 Октябрь 2013 - 11:54

как можно защитить самописный сайт на PHP от XSS ?
какие есть рецепты? =)

Самый просто способ это "нападать" на свой же сайт и найти уязвимости.

от XSS есть не мало функции
strip_tags() – вырезает теги HTML и PHP из строки.
htmlspecialchars() — конвертирует только специальные символы (‘&’, ‘»‘, »’, ‘<’ и ‘>’) в HTML сущности (‘&’, ‘"’…). Используется для фильтрации вводимых пользователем данных для защиты от XSS-атак.
htmlentities() – конвертирует все символы в строке (кроме букв) в мнемоники HTML. Используется для защиты от XSS, являясь более гибким аналогом htmlspecialchars.
stripslashes() – удаляет заэкранированные символы (после преобразования в сущности предыдущими функциями их незачем экранировать)
В коде лучше сразу делать защиту, проверять все данные которые вводятся, у беря пробелы и спец символы.

Еще можно и нужно делать фильтрацию всех GET и POST запросов.
Вот есть такая простая функция
function defender_xss($arr){
$filter = array("<", ">","="," (",")",";","/");
	 foreach($arr as $num=>$xss){
	    $arr[$num]=str_replace ($filter, "|", $xss);
	 }
	   return $arr;
}

  • 1

#3 r0mZet

r0mZet
    Topic Starter
  • Модератор
  • 966 сообщений
  • Репутация: 107

Отправлено 28 Октябрь 2013 - 11:55

Не могли бы Вы с этого места поподробней? Куда и как нужно все это прописать?
  • 0

#4 alex159

alex159
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 28 Октябрь 2013 - 12:33

Не могли бы Вы с этого места поподробней? Куда и как нужно все это прописать?

Я привел примеры функций и самописную функцию.

Так, открываем по очереди все файлы и смотрим. Где происходит вывод, ввод в базу данных или что то еще.(думаю кроме админ панели).
И перед тем как работать с данными которые получили,
фильтруем их к примеру через эту функцию
$you = strip_tags($you); // Вместо $you ваша переменная которая содержит какие либо данные которые могу идти с не доверенных источников.
К примеру в каких то формах на сайте перед тем как дать их значения обработчику провести через эту функцию
function defender_xss($arr){
$filter = array("<", ">","="," (",")",";","/");
		 foreach($arr as $num=>$xss){
		    $arr[$num]=str_replace ($filter, "|", $xss);
		 }
		   return $arr;
}
$_REQUEST=defender_xss($_REQUEST); // Эта строка проверить все GET и POST запросы на содержание следующих символов "<", ">","="," (",")",";","/"

Примеру форма входа в админку
Фильтруется, а потом передается обработчику.
$login = trim($login);
$password = trim($password);
// Далее передаем обработчику
Можно для надежности добавить еще пару проверок.
  • 0

#5 r0mZet

r0mZet
    Topic Starter
  • Модератор
  • 966 сообщений
  • Репутация: 107

Отправлено 28 Октябрь 2013 - 12:38

Спасибо! Весьма подробно расписано
  • 0


Оформление форума – IPBSkins.ru