当我将");--从输入字段发送到本地主机PHP服务器时,它会自动将其转换为
“);--
这似乎很棒,只是我不知道这种行为有多值得信赖。虽然它似乎避免了SQL注入,但我的开发环境与生产环境不一样,我担心生产环境可能不会自动激活这种保护.
为什么PHP要这样做(不需要使用mysql_real_escape_string来转换输入)?它总是这样做,还是只使用某些扩展?依靠这种行为来防止SQL注入安全吗?
发布于 2009-03-15 18:44:33
您似乎已经启用了魔术引号。但您最好禁用此选项或还原它们。mysql_real_escape_string更安全。
发布于 2009-03-15 18:52:16
发布于 2009-03-15 19:43:58
您可能希望使用像数据库这样的抽象层来与数据库进行对话。例如,如果通过实例化Zend_Db_Select创建select语句,则如下所示:
//$_GET['thing'] is automatically escaped
$select = $zdb->select()->from('things')->where('name = ?',$_GET['thing']);
$result = $zdb->fetchRow($select->__toString());//__toString generates a really pretty, vendor independent query
//a plain vanilla query would look like this:
$result = $zdb->fetchRow('select * from things where name = ?', $zdb->quote($_GET['thing']);https://stackoverflow.com/questions/648307
复制相似问题