【发布时间】:2012-03-07 18:07:27
【问题描述】:
我正在构建一个晦涩难懂的应用程序,该应用程序仅在涉及的注册过程后才可用,因此不应经常提交恶意数据。
我使用 Codeigniter 2.1 过滤所有 POST 变量。 Codeigniter 使用 PHP 函数 mysql_real_escape_string 以及其他措施来防止通过 POST 数据的 sql 注入攻击。
我使用 JavaScript 在客户端进行所有验证。 JavaScript 验证运行良好。当然,用户可以使用 cURL 或其他一些实用程序来绕过客户端验证,但是 Codeigniter 中的普通 PHP 验证应该可以防止 SQL 注入,对吧?
我可以在客户端进行验证并信任 Codeigniter 来保护数据库免受 SQL 注入攻击吗?
【问题讨论】:
-
SQL 注入只是需要担心的一件事(您可能可以安全地避免这种情况)。您应该始终使用服务器端验证,Javascript 验证只是一种便利功能(Javascript 甚至可以关闭,当您谈论安全性时,它毫无价值)。用户可以发送任何类型的数据,他们可以操作您的表单,甚至不需要 cURL。
-
我同意应该实现服务器端验证,并且 Codeigniter 确实实现了一定级别的服务器端验证。问题:Codeigniter 是否进行了足够的验证,根本不需要任何验证。
-
当然不够。它可以防止某些类型的攻击,但您始终必须严格。如果您希望有一个日期,请只接受一个日期。如果您需要一个数字,则只接受一个数字。等等。您应该考虑不存在客户端验证。另外,过滤和验证也不一样。
标签: php validation webforms codeigniter-2