Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Предотвращение выполнения скриптов, Взлом сайта передачей скрипта через GET 
V
    Опции темы
ammonit
Дата 14.3.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.3.2007

Репутация: нет
Всего: нет



Если где-либо на сайте есть вывод переменных переданных методом GET (например:
Код

<a href="formdob.php?id={$_GET['id']}"> 

) то если набрать в качестве параметра какой-либо скрипт - он выведется в html код и автоматически выполнится. 
Как этого можно избежать? (кроме варианта не выводить переменные и проверки каждой переменной перед выводом) 
Слышал это делается то ли через настройки Apache, то ли через настройки PHP...
PM MAIL   Вверх
mishaSL
Дата 14.3.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(ammonit @  14.3.2007,  17:46 Найти цитируемый пост)
если набрать в качестве параметра какой-либо скрипт - он выведется в html код и автоматически выполнится.


Не будет он выполняться. Приведите подробный пример.



Цитата(ammonit @  14.3.2007,  17:46 Найти цитируемый пост)
Слышал это делается то ли через настройки Apache, то ли через настройки PHP... 


через mod_rewrite разрешать только те данные которые должны быть в переменных.

через PHP, перед с самом начале скрипта проверять массив $_GET, и выризать все что не нужно.

А еще лучше и то и другое.



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
GZep
Дата 14.3.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Используйте url_encode.


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
ammonit
Дата 14.3.2007, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.3.2007

Репутация: нет
Всего: нет



Цитата(mishaSL @ 14.3.2007,  18:00)
Не будет он выполняться. Приведите подробный пример.

Код

<a href="formdob.php?id=\"{$_GET['id']}\">

Передаем:
Код

"><script language=javascript type=text/javascript>alert("Сайт взломан!");</SCRIPT><a href = "

Получаем:
Код

<a href="formdob.php?id=""><script language=javascript type=text/javascript>alert("Сайт взломан!");</SCRIPT><a href = "">

Что мешает скрипту выполнится? 

Цитата(mishaSL @ 14.3.2007,  18:00)

через mod_rewrite разрешать только те данные которые должны быть в переменных.


Спасибо за помощь!





Это сообщение отредактировал(а) ammonit - 14.3.2007, 21:39
PM MAIL   Вверх
mishaSL
Дата 14.3.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(ammonit @  14.3.2007,  21:33 Найти цитируемый пост)
Что мешает скрипту выполнится? 


Цитата(ammonit @  14.3.2007,  21:33 Найти цитируемый пост)
<a href="formdob.php?id=\"{$_GET['id']}\">


Чтобы вывелось $_GET['id'] нужно сделать хотябы так:
Код

<a href="formdob.php?id=<?=$_GET['id']?>">link</a>


Либо вывод идет через какой-нибудь шаблонизатор.

Цитата(ammonit @  14.3.2007,  21:33 Найти цитируемый пост)
Передаем:
Выделить всёРазметка HTML
1:
    
"><script language=javascript type=text/javascript>alert("Сайт взломан!");</SCRIPT><a href = "

Получаем:
Выделить всёРазметка HTML
1:
    
<a href="formdob.php?id=""><script language=javascript type=text/javascript>alert("Сайт взломан!");</SCRIPT><a href = "">



Как минимум сервер экранирует кавычки. Если даже без кавычек, то что толку от этого javascript-a. Ссылки на этот урл с сайта у тебя же не будет, ну порадуется человек smile  А если у тебя переменная потом в запрос к базе идет, то ее в любом случае надо дополнительно обработать.

А на деле советую использовать оба метода:

Цитата(mishaSL @  14.3.2007,  18:00 Найти цитируемый пост)
через mod_rewrite разрешать только те данные которые должны быть в переменных.

через PHP, перед с самом начале скрипта проверять массив $_GET, и выризать все что не нужно.


как минимум вырезать из массива _GET символы: <, >, http, ftp, https, :




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Elfet
Дата 19.3.2008, 21:23 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



htmlspecialchars?  smile 


--------------------
PM MAIL WWW Skype   Вверх
$дмитрий
Дата 19.3.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Код

(int)$_GET['id']

PM MAIL   Вверх
Feldmarschall
Дата 19.3.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Elfet, зачем отвечать на вопрос, который задавали год назад?
Тем более - не имеющий смысла вопрос.

PM   Вверх
Elfet
Дата 19.3.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Feldmarschall, прости не заметил smile


--------------------
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.