上一篇 <<<Web常用攻击手段-XSS
下一篇 >>>Web常用攻击手段-Http请求防盗链
把客户端提交的参数直接拼接后执行,而参数可能存在恶意的代码嵌入。
底层语句:
@Select(" SELECT * FROM user_info where userName=${userName} and password=${password}")
请求参数:
http://127.0.0.1:8080/login?userName='liusi'&password='123'
http://127.0.0.1:8080/login?userName='liusi'&password='123' or 1=1
解决思路:
不要使用拼接SQL语句方式、最好使用预编译方式
- #{}: 解析为一个JDBC预编译语句(preparedstatement)的参数标记符,一个#{}被解析为一个参数占位符,可以防止SQL注入问题。
- ${}:仅仅为一个纯碎的String替换,在动态SQL解析阶段将会进行变量替换,容易造成sql注入。
相关文章链接:
<<<Web常用攻击手段-XSS
<<<Web常用攻击手段-Http请求防盗链
<<<Web常用攻击手段-CSRF攻击
<<<Web常用攻击手段-上传文件漏洞
<<<Web常用攻击手段-忘记密码
<<<Web常用攻击手段-其他漏洞
<<<安全技术--数据加密/认证技术
<<<安全技术--Https相关知识
<<<安全技术--接口幂等性设计
<<<安全框架--SpringSecurity
<<<安全框架--JWT
<<<安全框架--OAuth2
<<<安全架构整体设计方案