首页 » 网站推广 » prepare的用法php技巧_为什么要运用PrepareStatement详解

prepare的用法php技巧_为什么要运用PrepareStatement详解

访客 2024-12-14 0

扫一扫用手机浏览

文章目录 [+]

我们在利用Statement接口时有一个缺陷。
由于在利用Statement接口要进行sql语句的拼接,这样做不仅麻烦,随意马虎出错,而且还存在安全漏洞。
便是我们在不知道精确的用户名或者密码的时候,在后面加上or 1=1 也可以获取精确的数据,这便是范例的sql注入。

如果利用Statement工具在实行SQL语句很随意马虎受到SQL的注入,那什么是SQL注入呢?

prepare的用法php技巧_为什么要运用PrepareStatement详解

所谓SQL注入便是用户在能够掌握SQL查询、更新、插入、删除等语句的参数的情形下,攻击者通过布局分外的输入字符串使后端程序缺点地识别SQL查询语句中 ·的代码与数据部分从而导致数据库管理系统输出了非预期的结果的一种行为。

prepare的用法php技巧_为什么要运用PrepareStatement详解
(图片来自网络侵删)

SELECT FROM Users WHERE Username='1' OR '1'='1' AND Password='1'OR '1'='1'

可以通过这样的SQL语句注入直接不须要输入精确的语句,就可以获取用户登录成功的精确账号信息等访问!

sql注入示例:

假设参数值是通过GET方法通报到做事器的,且域名为www.example.com 那么我们的访问要求便是:

http://www.example.com/index.php?username=1'%20or%20'1'%20=%20'1&password=1'%20or%20'1'%20=%20'1

对上面的SQL语句作大略剖析后我们就知道由于该语句永久为真,以是肯定会返回一些数据,在这种情形下实际上并未验证用户名和密码,并且在某些系统中,用户表的第一行记录是管理员,那这样造成的后果则更为严重。
而PrepareStatement接口就不存在这个问题。
由于PrepareStatement利用的是预编译语句,传入的任何数据都不会和已经预编译的sql语句进行拼接,避免了sql注入攻击。

那么PrepareStatement比Statement好在哪呢?

①提高了代码的可读性和可掩护性。
虽然利用PreparedStatement来替代Statement会多几行代码,但是避免了繁琐麻烦又随意马虎出错的sql语句拼接,提高了代码的可读性和可掩护性。

②提高了sql语句实行的性能。
创建Statement工具时不该用sql语句做参数,不会解析和编译sql语句,每次调用方法实行sql语句时都要进行sql语句解析和编译操作,即操作相同仅仅是数据不同。
而PrepareStatement就不会,由于每次创建PrepareStatement工具时利用sql语句做参数,会解析和编译该sql语句。
也可以利用带有占位符的sql语句做参数,在通过setXxx()方法给占位符赋值后实行sql语句时无需在解析和编译sql语句,直接实行即可。
多次实行相同的操作可以大大提高性能。

③提高了安全性。
由于PrepareStatement利用的是预编译语句,传入的任何数据都不会和已经预编译的sql语句进行拼接,避免了sql注入攻击。

标签:

相关文章

大数据赋能北体,智慧校园建设的新篇章

随着信息技术的飞速发展,大数据已成为推动教育改革和校园建设的重要力量。北京体育大学(以下简称“北体”)作为我国体育教育的领军院校,...

网站推广 2024-12-16 阅读0 评论0

大数据赋能商务,开启智能决策新时代

随着互联网技术的飞速发展,大数据时代已经来临。大数据作为一种新兴的资源,正在深刻地改变着各行各业,尤其是商务领域。通过合理运用大数...

网站推广 2024-12-16 阅读0 评论0