- 1
- 2
if ( $src =~ /^(.+)$/ ) { $src = "$1"; }
if ( $dst =~ /^(.+)$/ ) { $dst = "$1"; }
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−117
if ( $src =~ /^(.+)$/ ) { $src = "$1"; }
if ( $dst =~ /^(.+)$/ ) { $dst = "$1"; }
Еще один вариант проверки на непустую строку.
Dummy00001 13.08.2010 20:53 # +3
http://perldoc.perl.org/perlsec.html , цитирую:
Taint mode
While in this mode, Perl takes special precautions called taint checks to prevent both obvious and subtle traps. Some of these checks are reasonably simple, such as verifying that path directories aren't writable by others; careful programmers have always used checks like these. Other checks, however, are best supported by the language itself, and it is these checks especially that contribute to making a set-id Perl program more secure than the corresponding C program.
вобщем, в это режиме перл помечает все данные которые приходят из внешних источников специальным флагом, и пока код их не "почистит", при попытке использования этих данных, перл обломит выдаст ворнинг и может быть даже остановит исполнение.
Lure Of Chaos 13.08.2010 21:33 # −1
Dummy00001 13.08.2010 21:40 # +1
популярно для CGI & setuid скриптов - что бы не забывать ввод от пользователя проверять.
Lure Of Chaos 13.08.2010 21:47 # −1
Dummy00001 13.08.2010 22:20 # +1
Lure Of Chaos 13.08.2010 22:25 # 0
может быть, это паранойя, но если программа не проверит, что это действительно нечто похожее на md5 - то ей можно подать на вход и не md5, а все, что захочешь (подменив источник) - уязвимость налицо.
Dummy00001 13.08.2010 22:29 # 0
ЗЫ что бы /usr/bin/md5 подменить, надо рутом быть. а если уже кто-то имеет рута, то зачем страдать херней с подменой md5?
Lure Of Chaos 13.08.2010 22:44 # 0
у нас есть step1.pl, который обрабатывает данные и вызывает step2.pl, передавая данные для вывода. Если мы можем вызвать step1.pl, то можем вызвать и step2.pl c произвольными данными, и если step2.pl не проверит их корректность, то.......
напротив, если мы в ООП обьекте имеем два приватных метода, то будет излишеством, если каждый из них будет проверять, а не передал ли какой нибудь из них неочищенные данные.....
Lure Of Chaos 13.08.2010 23:09 # 0
например, если в $md5 мы ждем только md5-хеш, то вместо сабжевого if ( $md5 =~ /^(.+)$/ ) { $md5 = "$1"; }, который вы взялись защищать, можно написать хотя бы if ( $md5 =~ /^\w+$/i ) { $md5 = "$0"; } else { $md5 = ""; }
и на закуску предлагаю раскурить http://gunther.web66.com/FAQS/taintmode.html#clear_taint
Dummy00001 13.08.2010 23:13 # 0
внушаит! LOL
Lure Of Chaos 13.08.2010 23:16 # 0
Dummy00001 13.08.2010 22:30 # 0
в безопастности данных есть такое высказывание: "I'm paranoid. But am I paranoid enough?"
Lure Of Chaos 13.08.2010 22:45 # 0
Lure Of Chaos 13.08.2010 23:13 # 0
Arigato 31.10.2010 19:01 # −2
bGczbZF 25.08.2021 01:26 # 0