当前位置:新励学网 > 秒知问答 > 为什么PrepareStatement可以防止sql注入

为什么PrepareStatement可以防止sql注入

发表时间:2024-07-30 09:04:32 来源:网友投稿

其实是预编译功能,用preparedstatement就会把sql的结构给数据库预编译。

SQL注入 攻 击 是利用是指利用 设计 上的漏洞,在目 标 服 务 器上运行 Sql语 句以及 进 行其他方式的 攻 击 ,

动态 生成 Sql语 句 时 没有 对 用 户输 入的数据 进 行 验证 是 Sql注入 攻 击 得逞的主要原因。

对 于 JDBC而言, SQL注入 攻 击 只 对 Statement有效, 对 PreparedStatement 是无效的, 这 是因 为 PreparedStatement 不允 许 在不同的插入 时间 改 变查询 的 逻辑结 构。

如 验证 用 户 是否存在的 SQL语 句 为 :

select count(*) from usertable where name='用 户 名 ' and pswd='密 码 '

如果在 用 户 名字段 中 输 入 ' or '1'='1' or '1'='1

或是在 密 码 字段 中 输 入 1' or '1'='1

将 绕过验证 ,但 这种 手段只 对 只 对 Statement有效, 对 PreparedStatement 无效。

PreparedStatement 相 对 Statement有以下 优 点:

1.防注入攻击

2.多次运行速度快

3.防止数据库缓冲区溢出

4.代 码 的可读性可维护性好

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!