我有在 MYSQL 上保护 sql 注入的经验,但是在使用 php 驱动程序的 MongoDB 上我应该注意什么?在大多数页面中,我通过 GET/POST 和搜索/插入系统获取数据。我通过 UDID/其他字段进行搜索,并且可以插入任何字符串值。我还通过 javascript 获取用户的 cookie。
那么当 GET/POST 时,我要添加到每个变量 htmlentities 函数吗?
什么可以替代 mysql_real_escape_string?我应该使用它吗?
因此,例如,当做
$download = array( 'url' => $_GET['url'] );
$downloads->insert($download);
这个可以吗?
有没有办法检查字符串是否真的是 UID?
还有什么想法我在使用 MongoDB 和 PHP 时应该注意吗?我确实使用 javascript 获取 cookie,并使用 cookie 在我的数据库中搜索。那个怎么样?
那么当 GET/POST 时,我要添加到每个变量 htmlentities 函数吗?
无需。但是,您应该使用htmlentities
将用户生成的数据输出到浏览器时,防止 XSS 攻击。
什么可以替代 mysql_real_escape_string?我应该使用它吗?
你不应该使用mysql_real_escape_string
因为它是针对 MySQL 的。在 MongoDB 上没有什么可以替代这一点,驱动程序会为您转义数据。
有没有办法检查字符串是否真的是 UID?
验证它的唯一方法是使用该字符串查询 MongoDB 并检查它是否存在。
但是,您可以验证是否格式正确:
$id = '4f1b166d4931b15415000000';
$a = new MongoId($id);
var_dump($a->{'$id'} == $id); // true
$id = 'foo';
$a = new MongoId($id);
var_dump($a->{'$id'} == $id); // false
还有什么想法我在使用 MongoDB 和 PHP 时应该注意吗?我确实使用 javascript 获取 cookie,并使用 cookie 在我的数据库中搜索。那个怎么样?
不多。对于任何 Web 应用程序,您都不应该在 Cookie 中存储敏感数据,例如用户标识符、密码等,因为它们很容易被篡改并用于访问应用程序中应受到限制的部分,或冒充其他用户。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)