0

在将值添加到查询中以防止 sql 注入之前,我通常使用自己的函数来清理输入。我也使用梨 DB_DataObject。

我在这里读到 DB_DataObject 会清理输入本身。这是真的?我可以将未清理的输入分配给 DB_DataObject 对象吗?(mysql_real_escape_string 怎么样?,我将它与 DB_DataObject 结合使用时出现错误,因为尚未建立与 DB 的连接)

我也很好奇其他人如何清理那里的输入。有最佳实践吗?

4

1 回答 1

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]");

希望能澄清一些事情......

于 2009-10-11T03:35:06.527 回答