springboot-防止sql注入,xss攻击,cros恶意访问
完整代码下载链接:
https://github.com/2010yhh/springBoot-demos.git
环境
idea2018,jdk1.8,
springboot版本:springboot1.5.9.RELEASE
1.sql注入
sql注入:
把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
解决方法:
1)无论是直接使用数据库还是使用如mybatis组件,使用sql的预编译,不要用拼接字符串。
2)后台过滤检测:使用正则表达式过滤传入的参数**;**.字符串过滤
3)前端检测sql常见关键字,如or and drop之类的
测试:
1.sql直接拼接,访问:http://localhost:8180/webapp2/testSql1?userName=1&passWord=1 or 1=1
实际执行sql:sql1:select user_name,pass_word from cas_user where user_name= '1' and pass_word=1 INVALID 1=1
结果:输入错误信息也能查询
2.sql预编译(其他mybais组件类似),访问:http://localhost:8180/webapp2/testSql2?userName=1&passWord=1 or 1=1
实际执行sql:sql2:select user_name,pass_word from cas_user where user_name= '1' and pass_word= '1 INVALID 1=1'
结果:
2种不同的sql写法:
3.代码中增加了过滤器检测表单输入后,sql关键字段会被过滤掉;访问:http://localhost:8180/webapp2/testSql2?userName=1&passWord=1 or 1=1
结果:非法输入被过滤器过滤掉了(或者替换了)