Титла: php whois secure Публикувано от: v01d в Jun 27, 2009, 14:17 Как може един прост код като този по-долу да се защити от сорта на
http://buggy-script.com/whois.php?domain=alabala.net;cat /etc/passwd ? Код: <?php Титла: Re: php whois secure Публикувано от: neter в Jun 27, 2009, 14:55 Например
Код Въпрос на въображение ;) Титла: Re: php whois secure Публикувано от: ANTIADMIN в Jun 27, 2009, 15:44 Не разбирам много от пхп, но това би трябвало да работи:
system("whois $domain"); то system("whois ", $domain); Естествено трябва да се проверяват и други работи, например енв променливите, url, големината на инф., с 2 думи всичко, което идва отвън :) Нека капацитетите да се изкажат, без да спамят. p.s. в перл нещата са по-лесни :( Титла: Re: php whois secure Публикувано от: ivanatora в Jun 27, 2009, 16:21 p.s. в перл нещата са по-лесни :(Езика няма значение. Направи си един регулярен израз, с който да тестваш входните данни за непозволени символи. В случая всичко което може да се съдържа в $домейн са букви, цифри, точка, тире и долно тире. php.net/preg_match Титла: Re: php whois secure Публикувано от: romeo_ninov в Jun 27, 2009, 19:06 Долно тире? Забранено е използването му в имена на хостове и домейни!!!p.s. в перл нещата са по-лесни :(Езика няма значение. Титла: Re: php whois secure Публикувано от: gat3way в Jun 27, 2009, 19:29 Perl-аджиите нека си трошат главите с регулярни изрази. PHP си има escapeshellcmd() :)
Титла: Re: php whois secure Публикувано от: laker в Jun 27, 2009, 19:38 Perl-аджиите нека си трошат главите с регулярни изрази. PHP си има escapeshellcmd() :) $ perl -e '@args=qw(echo Hello;echo World);system(@args);' Hello;echo World Няма нужда :) Титла: Re: php whois secure Публикувано от: neter в Jun 27, 2009, 19:56 PHP си има escapeshellcmd()Моето предложение с urlencode() е с 5 байта по-кратко :P Но твоето пък може да излезе с някоя и друга микросекунда по-бързо. Както и да е. Това са двата най-чисти варианта. Preg_match е бавен, дълъг и се рискува пропускане на вариант. Не е полезен в този случай. Титла: Re: php whois secure Публикувано от: neter в Jun 27, 2009, 21:14 Опа, какво си набарах... :) Нещо почвам да губя доверие към escapeshellcmd().
Да разгледаме следния сценарий. Скриптът за whois проверката се изписва с escapeshellcmd(). Допълнително, в скрипта е добавен такъв код за по-нагледно показване на клиента какво търси (част от украшенията на сайта) Код И скриптът се зареди по следния начин Цитат http://domain.com/whois.php?domain=<a href="proba">proba</a>Някой сеща ли се как мога да използвам с користни цели това позволение на escapeshellcmd()? :) Жокер: Не казвам, че задължително ще използвам тага <a>, макар че и той може да свърши някаква работа. И не става дума за манипулиране на сървъра, а за манипулиране на клиента, което може да ми помогне за манипулиране рейтинга на сайта, на който се намира скриптът. P.S.0: Един вид манипулация на клиента може да се направи и с urlencode(), но вариантите се свеждат просто до написан текст и то не в прегледен вид. P.S.1: Ако решите да отговаряте на задачата, гледайте да не давате цялостни завършени указания за манипулацията, тъй като ще влезете в нарушение на т.7 от правилата ($2) на форума. edit: Помогнете и за намиране на по-сносна манипулация при използването на urlencode(). Невъзможни неща няма, а така ми седи някак незавършено :) Титла: Re: php whois secure Публикувано от: gat3way в Jun 27, 2009, 21:53 Идеята на escapeshellcmd е да филтрира кофти metacharacters, които евентуално биха отклонили изпълнението при викане на system() и компания. За "справяне" с HTML код е по-добре да се използва htmlentities(). И все пак не съм много убеден, че е практично по гореописаният начин да се осъществяват XSS атаки (за което предполагам намекваш). ОК, няма проблеми < да се escape-ва и да стане \<, обаче със затварящият тага > се чупят нещата.
Но иначе е възможно при дадени обстоятелства, примерно имаме: Цитат echo "Информация за домейна <a href='$domain'>$domain</b><br><br>"; тогава да речем можем да се пробваме да му предадем Код: ' onmouseover=alert(/blabla/.source); и вероятно ще мине номера. Иначе да, urlencode е по-идейно. Титла: Re: php whois secure Публикувано от: neter в Jun 27, 2009, 22:48 Точно за XSS атаки става дума [_]3 Естествено, няма да мине каквато и да е XSS атака, но с малко въображение могат да се постигнат добри резултати. Javascript, подобен на onmouseover, го изключваме като вариант, тъй като escapeshellcmd() ще сложи наклонени черти пред скобите, символа точка и запетая, и единичната кавичка в началото (тъй като е сама). При това се надяваме програмистът да не е сложил допълнителни обработки на съдържанието на променливата $domain, като htmlentities(), urlencode(), preg_match(), addslashes() и други.
Титла: Re: php whois secure Публикувано от: v01d в Jun 29, 2009, 00:18 Благодаря на всички за полезните отговори.
|