X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Защита от XSS и SQ-инъекций - верно ли?
smp
smp
Topic Starter сообщение 8.2.2013, 1:23; Ответить: smp
Сообщение #1


Здравствуйте!
Прочитал я разные статьи о защите от XSS и SQ-инъекций. В итоге получилась такая функция, которую необходимо вызывать перед обработкой данных от пользователя.

[PHP]// Экранирование данных, пришедших от пользователя
// пример вызова: $_REQUEST = screening($_REQUEST);
function screening($arr)
{
foreach($arr as $num=>$xss)
{
// Если это число, то достаточно так:
if(is_numeric($xss)) $arr[$num] = intval($xss);
// Для строк
else
{
$tmp = htmlspecialchars($xss); // преобразует спец. символы в html сущности
$arr[$num] = mysql_escape_string($tmp); // экранирует данные (для защиты от SQL-инъекций)
}
}

return $arr;
}[/PHP]

Вопрос: удачен ли мой способ защиты от XSS и SQ-инъекций? Если нет, то подскажите пож-та как лучше обезопаситься от взлома?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 8.2.2013, 12:02; Ответить: Den1xxx
Сообщение #2


(smp @ 8.2.2013, 04:23) *
удачен ли мой способ защиты от XSS и SQ-инъекций?

Я считаю что удачного способа защиты от XSS изобрести невозможно, т.к. это особенности (читай - недостатки) http - протокола.
Самое простое при защите от XSS — проверять при смене прав пользователя, с какого сайта исходит изменение прав.
Но и это можно обойти. Один мой знакомый поступил радикально — при запросе изменения прав перенаправлял на повторный ввод пароля.

Это защищает от XSS. Но не юзабельно массово, т.к. вводить дополнительный пароль при каждом пуке прикольно только на первых порах и не применимо в реальных проектах.

Что касается массового использования
[PHP]$arr[$num] = mysql_escape_string($tmp); // экранирует данные (для защиты от SQL-инъекций)
[/PHP]
то подобное можно наблюдать много где и используется.
Но перебор по всем строкам где надо и где не надо — имхо перебор;)
Вот тоже рабочий пример, который мне больше нравится:
[PHP]
function escape($string) {
if (!get_magic_quotes_gpc())
return mysql_real_escape_string($string);
else
return mysql_real_escape_string(stripslashes($string));
}
[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 8.2.2013, 16:39; Ответить: Witu
Сообщение #3


smp, неа не верный способ так как $xss может быть массивом или объектом
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 8.2.2013, 17:14; Ответить: Arks
Сообщение #4


[PHP]if(is_numeric($xss)) $arr[$num] = intval($xss);[/PHP]
Правильно - долой дробные части чисел с плавающей точкой, они только БД замусоривают! :rjunimagu:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
A1ex_hb
A1ex_hb
сообщение 8.2.2013, 18:17; Ответить: A1ex_hb
Сообщение #5


(smp @ 8.2.2013, 04:23) *
Здравствуйте!
[PHP]
...

// Если это число, то достаточно так:
if(is_numeric($xss)) $arr[$num] = intval($xss);
// Для строк
else
{
$tmp = htmlspecialchars($xss); // преобразует спец. символы в html сущности
$arr[$num] = mysql_escape_string($tmp); // экранирует данные (для защиты от SQL-инъекций)
}
...[/PHP]
Если число, его можно не обрабатывать сторонними функциями.



Тут можно обойтись только htmlspecialchars (для вывода) и подготовленными выражениями PDO (при сохранении в БД)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 8.2.2013, 19:48; Ответить: Witu
Сообщение #6


Warning: htmlspecialchars() expects parameter 1 to be string, array given как минимум
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 25.2.2013, 1:07; Ответить: ZhukV
Сообщение #7


Защита от SQLInjection - правильно использовать PDO*.
Защита от XSS - так называемаля соль. Очень мощный инструмент!

Пример:
Есть ссылка на удаления записи: http://domain.com/blog/111/delete
Тоесть, если есть права пользователя на удаления, то я Вам просто сбрасываю этот код. И если Вы перейдете, то все, блог удален =))
Добавим соль. Ссылка будет иметь вид: /blog/111/delete?key={SECRET_KEY}
Соль можно сохранять где угодно, в большинстве сохраняется в сесии пользователя. Даже я Вам сброшу этот УРЛ, то система Вас не пропустит, так как неизвестный ключ

http://ru.wikipedia.org/wiki/CSRF
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 25.2.2013, 7:53; Ответить: Den1xxx
Сообщение #8


(ZhukV @ 25.2.2013, 04:07) *
Защита от XSS - так называемаля соль. Очень мощный инструмент!

Добавлять соль ко всем урлам? Мощно.

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

То есть атаакуют вас или нет, но к каждому урлу будьте добры добавляйте ключ.

Знаете, какое заболевание «характеризуется длительными периодами необоснованного недоверия к окружающим»?
http://ru.wikipedia.org/wiki/%D0%9F%D0%B0%...%BE%D0%B9%D1%8F

Самая лучшая защита от XSS — если Вам прислали от неизвестного письмо «посмотри какие у моей девочки большие сиськи» — не ходить по ссылке.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 25.2.2013, 17:02; Ответить: Witu
Сообщение #9


ZhukV, очередной бред )

только формы отправляемые POSTом должны содержать ключ дабы ссылки были более или мнеее нормального вида а не что то в таком роде

http://site.ru/news/Vot_eto_pricol/?s=Я_ПА...ССЫЛКИ_ЗАСОЛЕНЫ

нормально посолили новость?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 26.2.2013, 23:54; Ответить: ZhukV
Сообщение #10


(Den1xxx @ 25.2.2013, 10:53) *
Добавлять соль ко всем урлам? Мощно.


Скорее всего не вырно выразил мысль =(

Соль желательно добавлять к тем урлам, где есть какие-то действия: удаление, блокирование и т.д.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) WordPress: ускорение, защита, оптимизация
35 wp01 20031 9.11.2022, 14:24
автор: wp01
Горячая тема (нет новых ответов) WordPress: ускорение, защита, оптимизация
41 wp01 9599 21.9.2020, 16:44
автор: wp01
Открытая тема (нет новых ответов) Нужна защита сайта от парсинга
Сайт парсит WpGrabber, нужна защита
18 Limonadik 4972 20.5.2020, 0:18
автор: pyaterka
Открытая тема (нет новых ответов) Удаление вирусов с сайтов, хостинга и серверов. Защита от взлома и устранение уязвимостей
0 vixan 2368 3.11.2018, 20:40
автор: vixan
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыЗащита WEB-сайтов от взлома и атак хакеров | Anti DDos
0 webitproff 1484 30.10.2017, 16:19
автор: webitproff


 



RSS Текстовая версия Сейчас: 18.4.2024, 18:36
Дизайн