Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Что такое XSS?
 
 автор: SNS   (25.10.2005 в 23:21)   письмо автору
 
 

Кто знает расскажите о XSS. Как и где его применяют.
Или где можно поподробней об этом прочитать.

   
 
 автор: PantiL   (26.10.2005 в 00:02)   письмо автору
 
   для: SNS   (25.10.2005 в 23:21)
 

Читать тут
http://softtime.ru/info/articlephp.php?id_article=35

   
 
 автор: OZ_   (26.10.2005 в 06:01)   письмо автору
 
   для: PantiL   (26.10.2005 в 00:02)
 

В статье неточность:
<input name="username" value="<? echo $_GET['username'?>">

Данный код не причиняет вреда, а лишь демонстрирует уязвимость XSS, отображая ваши cookie. Следует помнить, что код может быть другим, более опасным и, будучи оставленным, например, в сообщении гостевой книги будет запускаться на машине каждого из посетителей гостевой книги.

Следуя логике примера: тот, кто геморойное выражение введёт, у того на машине оно и выполнится. А в скрипт эта ерунда не запишется.

Следущее:
Злоумышленник может загрузить страницу с формой добавления сообщения к себе на локальный компьютер и добавить несколько сотен сообщений в гостевую книгу или форум. Для предотвращения такого вида атак существует два метода борьбы.
Проверка элемента суперглобального массива $_SERVER['REFERRER'] на предмет содержания в нём адреса исходного сайта, позволяет устранить данный вид атаки


REFERRER в браузере можно вообще запретить передавать - для пользователей, которые так сделают, сайт с такой "защитой" будет выглядеть недружелюбно, мягко говоря.

Потом:
1. Не используйте проверку на возращение строки (mysql_num_rows()), а применяйте следующий подход:
$user = $_POST['user']; 
  $pass = $_POST['pass']; 
  $sql = "SELECT user, pass FROM users WHERE user = '$user'"; 
  list($m_user, $m_pass) =
...

Тут можно элементарно инъекцию всунуть, советчики.

Используйте addslashes! ВСЕГДА проверяйте типы и размеры переменных, переданных пользователем. Даже если скрипт написан исключительно для админа. Его (любого скрипта) имя узнать не так уж сложно.

   
 
 автор: Artem S.   (26.10.2005 в 08:13)   письмо автору
 
   для: OZ_   (26.10.2005 в 06:01)
 

1.
В чате можно послать ссылку на http://site.ru?username="><script>alert('test')</script>
и закодировать ее через urlencode, так что ты не сразу поймешь в чем подвох.

2.
Да есть такое, что некоторые firewall'ы блокируют HTTP_REFERER, но их мало, к тому же для них не доступно будет лишь отправка формы, а не весь сайт.

3.
Про sql инъекцию, разказываеться ниже. Было показано для чего не нужно было использовать mysql_num_rows(). Если все сразу писать про addslashes, нужно будит упоминуть про get_magic_quotes_gpc, и тогда код будит выглядет так

<?
$sql 
"SELECT user, pass FROM users WHERE user = '$user'";
list(
$m_user$m_pass) =
if( 
get_magic_quotes_gpc() )
{
$user $_POST['user'];
$pass $_POST['pass'];
}
else
{
$user addslashes($_POST['user']);
$pass =addslashes($_POST['pass']);
}
$sql "SELECT user, pass FROM users WHERE user = '$user'";
list(
$m_user$m_pass) = mysql_fetch_rowmysql_query($sql) ); 

Код грамозк, сразу возникает вопрос что такое get_magic_quotes_gpc() и т.д., а смысл был лишь показать сам принцип.

>> Используйте addslashes! ВСЕГДА проверяйте типы и размеры переменных, переданных пользователем.
У меня вызывает улыбку. Тип переменных переданных через POST всегда string, если вы не знали. На счет всегда. Не нужно применять addslashes для переменных, которые не участвуют в sql запросах, иначе нужно сделать stripslahses для возврата переменных в форму в случае ошибки.
Я допустим делаю провеку по рег. выражению, так что кроме букв и цифр писать ничего нельзя, и проблем с magic_quotes нет, потому что кавычек нет вообще.

   
 
 автор: OZ_   (26.10.2005 в 08:28)   письмо автору
 
   для: Artem S.   (26.10.2005 в 08:13)
 

Лишь бы у взломщиков ваш код не вызвал улыбку :) А так - улыбайтесь хоть 24 часа в сутки :)))))))

>3.
>Про sql инъекцию, разказываеться ниже.


Про них рассказывается выше, а не ниже. в этом вся ирония.

>1.
>В чате можно послать ссылку на http://site.ru?username="><script>alert('test')</script>
>и закодировать ее через urlencode, так что ты не сразу поймешь в чем подвох.

Я сказал, что неточность в примере, а не в теории, которую он до нас доносит.

>2.
>Да есть такое, что некоторые firewall'ы блокируют HTTP_REFERER, но их мало, к тому же для >них не доступно будет лишь отправка формы, а не весь сайт.

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

>Не нужно применять addslashes для переменных, которые не участвуют в sql запросах

Погорячился, признаю. Просто часто вижу здесь (от участников) дырявые куски кодов.

>Я допустим делаю провеку по рег. выражению, так что кроме букв и цифр писать ничего нельзя, >и проблем с magic_quotes нет, потому что кавычек нет вообще.

А если пользователю нужно ввести текст "о себе"?

>Тип переменных переданных через POST всегда string, если вы не знали.

Да и от GET тоже. Но фишка в том, что string редко требуется, и часто переменную от пользователя безопаснее перевести в число.

   
 
 автор: Artem S.   (26.10.2005 в 15:12)   письмо автору
 
   для: OZ_   (26.10.2005 в 08:28)
 

О чем вы спорите? Хотите уличить авторов в чем то?

Есть неточности - их нужно поправить.
Иногда быват случае, когда учасник спрашивает: "а как меня могу взломать", то не куда было и "тыкнуть", а с этой статьей есть куда "посылать", с такими вопросами.

Далее считаю спор бессмысленым.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования