C, PHP, VB, .NET

Дневникът на Филип Петров


* Не вярвайте на Environment Variables

Публикувано на 07 декември 2008 в раздел ОСУП.

На няколко пъти споменахме, че Environment Variables не трябва да бъдат използвани като достоверен източник на информация. Време е да добавим още нещо - използването им може да доведе и до пробиви в сигурността. Една статия от seancoates.com заслужава значително внимание.

Трябва да отбележим, че описаното в статията е изключително честа практика при програмирането на PHP, а именно - когато правите заявка от един скрипт към самия него, то програмистите използват за улеснение $_SERVER['PHP_SELF']. Тази environment променлива записва текущия локален път към скрипта. Следните форми могат да бъдат видяни в изключително много PHP приложения:

	echo '<form action="'.$_SERVER['PHP_SELF'].'">';

Както вече е описано в статията по-горе, този код е уязвим от потенциална XSS атака, като просто се добавят кавички, затваряща ъглова скоба и последващ html код или javascript чрез URL (от примера в сайта "/%22%3E%3Cscript%3Ealert('xss')%3C/script%3E%3Cfoo").

За превенция на подобни уязвимости ще повторим вече казани принципи:

1. Не използвайте GET за попълване на форми;

2. Защитавайте формите от XSRF;

3. Не вярвайте на environment променливите;

4. Третирайте environment променливи и ги филтрирайте по същия начин, както обикновените променливи.

Задача: Потърсете open source приложения, написани на PHP, които използват несигурно PHP_SELF.

 



Добави коментар

Адресът на електронната поща няма да се публикува


*