Общие > Базы данных
Защита от недоразумений с выбором из таблички
DDHR:
я собираюсь для прочтения подробностей новости сделать скрипт, который бы выводил по id колонку details, НО если я буду писать ссылку на скрипт, который их будит выводить, например:
... news/details.pl?id=id_новости
то в скрипте я не могу ведь делать:
$id=param(\'id\');
$sth = $dbh->prepare("SELECT * FROM news where id = $id")|| die "$DBI::errstr";
$sth->execute;
а ведь могут написать в URL что-то вроде:
DROP TABLE ...
и скрипт, не расчитыая такого поворота событий будет делать, то что ему будут говорить злоумышленники
ведь может такое быть, если ДА, то как в моём примере этого избежать?
Макс:
проверяй, чтобы там число было. Например так:
--- Код: ---unless ($id =~ /^[0-9]+$/) {
print "wrong news ID";
exit;
}
--- Конец кода ---
DDHR:
а если я например захочу выводить сведения профиля по логину, то там будит обращение вида:
?user=login
$user=param(\'user\');
$sth = $dbh->prepare("SELECT * FROM users where user = $user")|| die "$DBI::errstr";
$sth->execute;
как проверять тогда?
Chs:
perldoc DBI в части placeholders
DDHR:
А вы не скажете по подробнее? Я не понял где и что смотреть, а лучше если не трудно, то опишите ситуацию прямо здесь.
Спасибо за ранее.
Навигация
Перейти к полной версии