Защита от XSS. Как?

12
NZ
На сайте с 20.09.2009
Offline
12
#11

T.R.O.N, эм, это не я тему создал :)

Я лишь предложил способы, я, как бы, и не опасаюсь ничего :)

G
На сайте с 16.09.2009
Offline
2
#12

Смысл тоже не ясен, причем xss к роутингу

Как сказали ранее, если нет модуля на 404 редиректить

От xss использовать http://php.net/htmlentities

и да регулярка странная для проверки, во-первых смысла в ней нет так как идет фактически проверка на присутсвие раздела а не на набора символов и во-вторых зачем точка в ней? т.е. вы пропускаете любой символ или что? a-zA-Z._0-9

Agel Nash
На сайте с 01.12.2008
Offline
61
#13

T.R.O.N +1. ИМХО зачем проверять переменную если она напрямую на страницу не подставляется?

Варианты типа

echo $_GET['r'];
встречаются как правило в поиске, другой необходимости я не вижу так делать.

Но если уж дошло дело до echo или print то в помощь htmlspecialchars.

Еще можно глянуть в сторону htaccess.

Я (http://agel-nash.ru) - вильгельм "ЗАКОЛЕБАТЕЛЬ" Аудит безопасности MODX сайтов (/ru/forum/783778) | Обучение созданию сайтов (http://modcoach.info/)
seosniks
На сайте с 13.08.2007
Offline
389
#14
T.R.O.N:
а накой Вы проверяете?????
по такому запросу должна выдаваться ошибка 404. почему этого не происходит?
И что из приведенного является защитой от XSS????

передаем

index.php?razdel=%3Cscript%3Ealert(%22XSS%22)%3C/script%3E

пулучаем Ошибка!!! В разделе alert(\"XSS\") нет новостей

есть проверка 

strip_tags
htmlspecialchars
htmlentities

но я хочу чтоб в переменной

$_GET['r'])
обрабатывались только буквы и цифры.

все остальное шло лесом

seosniks добавил 23.09.2009 в 09:58

NutZ:


if (isset($_GET['r'])) {
if(!preg_match("/^[a-zA-Z._0-9]+$/", $_GET['r'])){
echo "ERR";
}
}
else {
$_GET['r'] = "news";
// Ну или Header("Location: error404.php");
}



NutZ добавил 22.09.2009 в 17:11
T.R.O.N, тогда редирект в помощь.

NutZ добавил 22.09.2009 в 17:15
Хм, а если разделы статичиские, то почему бы просто не сделать след. образом:


switch ($r) {
case "news":
include("news.php");
break;
case "news1":
include("news1.php");
break;
case "news2":
include("news2.php");
break;
}


Ну, это образно. Инклюд или не инклюд, не знаю, почему бы этот вариант не рассмотреть?

Разделы динамичные с ними разобрался.

новости берутся из текстового файла.

seosniks добавил 23.09.2009 в 10:01

Просто решил написать себе простую кмску для сателлитов не использующую базы данных sql

И легкую насколько это возможно.;)

NZ
На сайте с 20.09.2009
Offline
12
#15

seosniks, ну чем же тогда та же регулярка не подходит, м?

T.R.O.N
На сайте с 18.05.2004
Offline
314
#16
seosniks:
передаем
index.php?razdel=%3Cscript%3Ealert(%22XSS%22)%3C/script%3E
пулучаем Ошибка!!! В разделе alert(\"XSS\&quot нет новостей

Вы бредите!

А зачем переменную razdel печатаь на экран??????? Мне всегда казалось что об этом рассказывают в тот-же момент когда объясняют как работает функция echo!

Такое может быть необходимо только на страницах с поиском и то обходится банальной заменой

> - &gt; < - &lt; & - &anp; %3C - &gt; %3E - &lt; При этом, если это поиск - такие символы вобще должны быть удалены....

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
NZ
На сайте с 20.09.2009
Offline
12
#17

Ну, не только поиск. Есть ещё несколько частных вариантов, а вообще T.R.O.N — прав. Зачем такие заморочки?

seosniks
На сайте с 13.08.2007
Offline
389
#18
T.R.O.N:
Вы бредите!
А зачем переменную razdel печатаь на экран??????? Мне всегда казалось что об этом рассказывают в тот-же момент когда объясняют как работает функция echo!

данные передаются методом GET/

это не поиск, это динамически генерируемое меню с сылками

по этому запрос виден в урле а так же на экране видим его значение.

На пример index.php?razdel=video

на экране видим Раздел видео>название статьи

Такое может быть необходимо только на страницах с поиском и то обходится банальной заменой

> - &gt; < - &lt; & - &anp; %3C - &gt; %3E - &lt; При этом, если это поиск - такие символы вобще должны быть удалены....

я могу сделать ссылки статическими но мне так не нужно.

переменная не печатается, на экране видим только название раздела и все.

В любом случае все получаемые из вне данные надо проверять.

T.R.O.N
На сайте с 18.05.2004
Offline
314
#19
seosniks:
по этому запрос виден в урле а так же на экране видим его значение.

Ну так ведь это недопустимо! По сути.

и еще razdel=video -> На экране Раздел видео... В чем проблема. Зачем саму переменную печатать?????

seosniks:
В любом случае все получаемые из вне данные надо проверять.

Конечно. Но только к XSS это отношение не имеет

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий