作者qrtt1 (隐者)
看板PHP
标题Re: [请益] php 发生 隐码问题
时间Thu Apr 6 13:48:14 2006
※ 引述《ckmarkhsu (深蓝站长)》之铭言:
: php 也有此风险
: 例如 SELECT userid FROM user WHERE username = $usernmae
: 如果传近来的值是 '' OR 1=1
: 那就会出错啦:P
: ※ 引述《justinC (无)》之铭言:
: : 像asp 很容易发生这类问题
: : 大多查到资料都是asp的
: : 虽然php 的预设都有把特殊字元slash掉
: : 难道就不会发生问题吗?有php相关资料吗
用prepared statement, 大部分会escape掉
(ex. PEAR::DB的prepare&execute或mysql本身的prepared statement)
疯狂地检查值域不对就退回
至少要有长度与字元集合的范围检查
只要是使用者端有办法送字串过来的地方都check
(好像有一点偏执狂xd)
function id_checker($id)
{
$id = trim($id);
if( regex_checker("/^([a-z][a-z\d]+)$/i", $id) && length_checker(6, 10,
$id) )
return true;
return false;
}
function passwd_checker($passwd){
$passwd = trim($passwd);
if( regex_checker("/^([a-z\d]+)$/i", $passwd) && length_checker(4, 12,
$passwd) )
return true;
return false;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.26.34.20