LINUX.ORG.RU

perl + html


0

0

Подскажите пожалуйста новичку, нужно ли проверять данные вводимые
в поля формы если это данные потом служат основой для SQL запросов.
Т.е. вроде я не вижу проблем, скорее потому, что нет опыта, подскажите
возможные проблемы и пути их решения. Данные из базы потом отображаются
то же в браузере.

anonymous

Re: perl + html

Перед подстановкой их в запрос удваивай кавычки (') для строк и соответствие типов проверяй

phoenix ★★★★ ()

Re: perl + html

Желательно проверять запросы в которых вставка может быть опасной, например новички часто делают поля для в вода integer в виде input type=text...
и не проверяют их на число. и если SQL выглядит так "SELECT * FROM asdf WHERE id=$id" где в $id не проверянная строка, то я могу в $id поместить и 1;DROP ..... :) Думаю эффект понятен... так можно еще вытягивать много данных скидывая их в дамп файл итп итд...
Короче проверяй все что можно :)

godexsoft ()
Ответ на: Re: perl + html от godexsoft

Re: perl + html

не грузи, а?

mysql error 1064 in function F ("")
(You have an error in your SQL syntax near ';drop table test' at line 1)
Last SQL: "select * from test where id=1;drop table test"

theserg ★★★ ()
Ответ на: Re: perl + html от godexsoft

Re: perl + html

my $data = $q -> param ('data');
......................
my $request = "insert into tmp (data) values('$data')";
Так что насчет базы данных вроде как можно не беспокоиться.
Но, если в $data, окажется что-то вроде <font size=1 color="#FF000">
то при отображении этой переменной... :) HTML наверное знаешь, догадался. Ну и как написали - защита от дурака, проверяй входные данные, что бы вместо числа не было чего-нибудь другого.

stalcker ()
Ответ на: Re: perl + html от theserg

Re: perl + html

Это mysql ;)
Если нарватся на серьезную базу которая умеет делать запросы разделенные ';' ?? тогда писец :) Постгрес оч хороший тому пример.
сосите соску :)

godexsoft ()
Ответ на: Re: perl + html от phoenix

Re: perl + html

Кавычки удваивать - это не наш метод. Есть же нормальный способ:

$sth = $dbh->prepare("SELECT * FROM tbl WHERE clmn=?"); $sth->execute(param('clmn'));

Teak ★★★★★ ()
Ответ на: Re: perl + html от theserg

Re: perl + html

2godexsoft

постге - это фигня, весь инет живёт на mysql

и можешь пыхтеть скока хочешь - но это факт

theserg ★★★ ()
Ответ на: Re: perl + html от anonymous

Re: perl + html

Фигня, bind_values идеологически правильнее.

Teak ★★★★★ ()
Ответ на: Re: perl + html от anonymous

Re: perl + html

не путай мягкое с теплым... man DBI != perldoc DBI.

godexsoft ()
Ответ на: Re: perl + html от theserg

Re: perl + html

сразу видно, не опытный человек, профессия явно не связана с сетью и сетевым кодингом :)) Короче mysql это популярная база, но то что ВЕСЬ инет на ней - бред... у нас и то в конторе половина серьезных проектов на постгресе. Если бы всюду был мускуль - я бы ни разу не смог сделать скуль иньекцию через кривые пхп скрипты ;) Сосите соску особо большого размера :))

godexsoft ()
Ответ на: Re: perl + html от godexsoft

Re: perl + html

godexsoft, ты что тут из себя кулхацкера строишь?
это ведь даже недетский способ.


2автор: обязательно используй placeholders.
perldoc DBI



как пример:
допустим кто-то делает проверку логина и пароля следующим образоб
$dbh->prepare("select user_id from user_table where user_name = '$username' and user_pass = '$userpass'");

а теперь представь, что в форму ввели следующие данные
login: root
pass: ' or user_name = 'root'

если эти данные вставить в запрос "как есть" то получим
$dbh->prepare("select user_id from user_table where user_name = 'root' and user_pass = '' or user_name = 'root'");

в результате запрос успешно авторизует пользователя как root.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.