导致sql注⼊的根本原因
导致sql注⼊的根本原因
1.sql注⼊的定义
SQL注⼊即是指web应⽤程序对⽤户输⼊数据的合法性没有判断或过滤不严,攻击者可以在web应⽤程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现⾮法操作,以此来实现欺骗数据库服务器执⾏⾮授权的任意查询,从⽽进⼀步得到相应的数据信息.
2.导致sql注⼊的根本原因
⽤户输⼊的信息中含有sql语句的关键字,并且这些关键字参与sql语句的编译过程。
导致sql语句的原意被扭曲,进⽽达到sql注⼊.
解决SQL注⼊问题:
只要⽤户提供的信息不参与sql语句的编译过程,问题就解决了
即⽤户提供的信息中含有sql语句的关键字,但是没有参与编译,不起作⽤
要想⽤户信息不参与SQL语句的编译,那么必须使⽤java.sql.PreparedStatement
PreparedStatemeent接⼝继承 java.sql.Statement
PreparedStatement是属于预编译的数据库操作对象
PreparedStatement的原理是:预先对SQL语句的框架进⾏编译,再给SQL语句传“值”
3.防⽌SQL注⼊
1.永远不要信任⽤户的输⼊。对⽤户的输⼊进⾏校验,可以通过正则表达式,或限制长度;对单引号和双"-"进⾏转换等。
2.永远不要使⽤动态拼装sql,可以使⽤参数化的sql或者直接使⽤存储过程进⾏数据查询存取。注入
3.永远不要使⽤管理员权限的数据库连接,为每个应⽤使⽤单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应⽤的异常信息应该给出尽可能少的提⽰,最好使⽤⾃定义的错误信息对原始错误信息进⾏包装
6.sql注⼊的检测⽅法⼀般采取辅助软件或⽹站平台来检测,软件⼀般采⽤sql注⼊检测⼯具jsky,⽹站平台就有亿思⽹站安全平台检测
⼯具。MDCSOFT SCAN等。采⽤MDCSOFT-IPS可以有效的防御SQL注⼊,XSS攻击等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论