filter_var
和FILTER_SANITIZE_STRING
过滤器,我是否安全? 答案 0 :(得分:4)
过滤和转义输入,然后直接从中构建SQL语句是解决问题的破解方案。 mysql_escape_string()
让逃避后悔的人认为他们是安全的;谁说mysql_real_escape_string()
不会有自己的问题?
始终使用参数化查询。
答案 1 :(得分:3)
filter_var
。使用SQL准备好的语句,例如MySQLi's或PDO's。如果您没有安装的扩展程序/驱动程序,请使用mysql_real_escape_string
,但这种方法更容易出错,因为您需要在任何地方手动应用它。答案 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)
您使用的是什么数据库?如果是普通的MySQL或MySQLi,请使用mysql_real_escape_string()或mysqli_real_escape_string()。如果是PDO或类似的人,请使用准备好的陈述,您不必担心逃避。
你觉得会话不安全怎么样?会话数据存储在服务器上。只要服务器设置正确且本身安全,您应该没问题。但是, 有可能有人可以获得另一个人的cookie(但不是你做的),并且劫持了他的会话。你可以帮助,(尽管没有万无一失的方法)通过跟踪使用者来防范它,但是你可以做的事情还不多。