Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: VladSun в Oct 09, 2007, 23:51



Титла: Php include() bug
Публикувано от: VladSun в Oct 09, 2007, 23:51
Значи ... споря си аз в един форум, че
Примерен код

include("contents/prefix_".$GET['a']);


е доста сигурно и не подлежи на "../../../" експлойти, защото prefix_* директория не съществува.
НО... оказа, се че тъпото PHP не се интересува дали съответната директория съществува щом може да я игнорира заради ../ . Явно някаква предварителна оптимизация на пътя се прави преди четенето на файла, при което се губи грешката от несъществуването на някоя от директориите.

Това в шела или Perl не върви - изплюва веднага грешка, но PHP-то е с особено мнение по въпроса ...


Титла: Php include() bug
Публикувано от: Hapkoc в Oct 10, 2007, 07:14
Мдаа, изродско.

Ако говорим принципно си е малко рисковано да ползваш точно такъв код, но проблема в php-то си съществува...


Титла: Php include() bug
Публикувано от: gat3way в Oct 10, 2007, 09:40
Това минава в PHP?

Много странно :)


Титла: Php include() bug
Публикувано от: VladSun в Oct 10, 2007, 13:20
@Hapkoc
Аз само за ../.. спорех, ама се оказах "крив"

@gat3way
"странно" :) то си е направо идиотско ;)

Както вика един приятел - може да не е bug, а feature :) :)

УжасТ ... бях толкова сигурен, че пуснах един такъв ПХП файл да ми хакват сървера :) По едно време почнах бая се шашнах ...





Титла: Php include() bug
Публикувано от: eniac111 в Oct 16, 2007, 18:18
Че на кой му пречи да сложи
Примерен код
if(strpos($page, "..") === true) {
die();
}


Титла: Php include() bug
Публикувано от: gat3way в Oct 16, 2007, 19:04
Много забавен въпрос :)

Ако хората винаги пишеха "сигурен" код нямаше да се случват сума ти глупости :)


Титла: Php include() bug
Публикувано от: VladSun в Oct 16, 2007, 19:42
Цитат (eniac111 @ Окт. 16 2007,18:18)
Че на кой му пречи да сложи
Примерен код
if(strpos($page, "..") === true) {
die();
}

1. Кодът ти е грешен :) - die() *никога* няма да се изпълни ;)
man strpos ;)
2. Аз просто съм възмутен, огорчен и потресен от безумието на тази PHP функция :) Иначе валидации, санитизации и т.н. - бол могат да се направят ;)