加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

在PHP中保护SQL查询的最佳方法

发布时间:2020-12-11 23:53:56 所属栏目:MySql教程 来源:网络整理
导读:如果我使用PHP在MySQL数据库上运行查询,如下所示: $query="SELECT * FROM tablename"; 从SQL注入等方面获得保护的最佳方法是什么?我听说过一些转义方法,但它不会在查询中留下斜杠吗?最佳答案您在问题中显示的查询不使用用户提供的值,因此不存在SQL注入的

如果我使用PHP在MySQL数据库上运行查询,如下所示:

$query="SELECT * FROM tablename";

从SQL注入等方面获得保护的最佳方法是什么?我听说过一些转义方法,但它不会在查询中留下斜杠吗? 最佳答案 您在问题中显示的查询不使用用户提供的值,因此不存在SQL注入的情况,但在一般情况下: –

首先,您必须在查询中使用之前验证所有用户输入(用户名,电子邮件等).例如: – 如果您只允许用户名中的字母数字字符,那么在继续形成数据库查询之前必须检查输入是否实际是字母数字,并且还必须检查所有输入的大小.

之后,在我看来,Prepared Statements是防止SQL注入的最佳选择.

mysql_real_escape_string()的问题: –

由于mysql_real_escape_string()根据默认字符集转义字符,因此它比addslashes()函数更好,并且它正确清理SQL injections arising out of abuse of multibyte character sets,但在另一篇文章here中,显示了一个解决方案 – 场景,解释了注入仍然可以完成.

解:-

因此,防止SQL注入的正确和更好的方法是使用预准备语句.这是一种在插入用户输入(参数)之前预编译SQL语句并将其视为可重用SQL模板的技术.因此,它将用户输入与实际的SQL-Code分开,而SQL解析器从不解析用户输入.

除了安全性,它还优化了SQL查询的速度.它有助于您需要使用不同的用户输入多次运行相同的查询.

您可以参考PHP手册了解实现细节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读