PHP安全问题 - SQL注入,过滤和会话安全

时间:2011-02-16 19:29:25

标签: php sql security filter sql-injection

  • 关于SQL注入:只使用filter_varFILTER_SANITIZE_STRING过滤器,我是否安全?
  • 如何让会话更安全?我认为使用会话进行登录并使用会话变量来验证登录是不够的。

7 个答案:

答案 0 :(得分:4)

过滤和转义输入,然后直接从中构建SQL语句是解决问题的破解方案。 mysql_escape_string()让逃避后悔的人认为他们是安全的;谁说mysql_real_escape_string()不会有自己的问题?

始终使用参数化查询。

答案 1 :(得分:3)

  • SQL注入。您不想使用filter_var。使用SQL准备好的语句,例如MySQLi'sPDO's。如果您没有安装的扩展程序/驱动程序,请使用mysql_real_escape_string,但这种方法更容易出错,因为您需要在任何地方手动应用它。
  • 只要获得安全并保持安全,会话就是安全的。您可以通过使用户具有强密码和/或双因素身份验证来确保安全获取它们。您可以使用HTTPS保护会话安全,从而破坏MITM攻击。

答案 2 :(得分:1)

<强> filter_var

不是真的。您可以使用FILTER_SANITIZE_MAGIC_QUOTES,但强烈建议您PDO使用prepared statements。它保证您不会有任何SQL注入,因为您的查询和数据是分开的。

会话安全性

嗯,你必须以某种方式识别你的用户。如果您的会话cookie是由PHP的session_start创建的,它将是随机的,您存储在$ _SESSION中的任何数据都将存储在服务器端。安全漏洞是会话劫持(又名FireSheep)。只要您的会话cookie明确传输,恶意的人就可以窃取它并冒充用户。

要使会话更安全,请使用SSL,仅将会话Cookie设为HTTP,仅设置SSL。

答案 3 :(得分:0)

RE:SQL注入 - 您应该使用mysql_real_escape_string()

答案 4 :(得分:0)

我建议你寻找一个php框架,一个php框架可以帮助你构建一个安全的Web应用程序并进行优化。

我使用zend框架,它会照顾它

答案 5 :(得分:0)

对于SQL注入,使用mysql_real_escape_string(),它将负责转义可能在SQL注入攻击中使用的任何字符。

为了使会话更安全,您可以加密会话信息,但我们可能需要了解更多关于您当前如何使用会话来回答的问题。

答案 6 :(得分:0)

  1. 您使用的是什么数据库?如果是普通的MySQL或MySQLi,请使用mysql_real_escape_string()或mysqli_real_escape_string()。如果是PDO或类似的人,请使用准备好的陈述,您不必担心逃避。

  2. 你觉得会话不安全怎么样?会话数据存储在服务器上。只要服务器设置正确且本身安全,您应该没问题。但是, 有可能有人可以获得另一个人的cookie(但不是你做的),并且劫持了他的会话。你可以帮助,(尽管没有万无一失的方法)通过跟踪使用者来防范它,但是你可以做的事情还不多。