我通常使用自己的函数来清理输入,然后在查询中添加值以防止sql注入。我也使用pear DB_DataObject。
我读到DB_DataObject清理输入本身。这是真的?我可以将未清理的输入分配给DB_DataObject对象吗? (那么mysql_real_escape_string?,我在使用它与DB_DataObject结合时会出错,因为还没有与DB建立连接)
另外我很好奇其他人如何清理输入。有最好的做法吗?
答案 0 :(得分:1)
DB_DataObject清理在“ - > set *”方法上传递的输入,例如
假设User为DB_DataObject,以下都是安全的:
$user = new User;
$user->firstName = $_REQUEST['first'];
$user->setFirstName($_REQUEST['first'];
$user->setFrom($_REQUEST);
实际上在SQL片段中传递的任何方法都不安全,例如:
$user->selectAs($_REQUEST['col']. ', first as name');
$user->whereAdd("first=$_REQUEST['first]");
希望稍微澄清一下......