* Не вярвайте на 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.
Добави коментар