让你彻底了解SQL注入、XSS和CSRF

安全 应用安全
相信大家在各种技术文章都看到过SQL注入、XSS和CSRF这三个名词,但是我觉得有一部分人可能并不清楚这三个词的真正含义。接下来,我就说下这三个名词的含义,希望对大家能有所帮助。

 相信大家在各种技术文章都看到过SQL注入、XSS和CSRF这三个名词,但是我觉得有一部分人可能并不清楚这三个词的真正含义。接下来,我就说下这三个名词的含义,希望对大家能有所帮助。

[[258087]]

 

SQL注入

SQL注入是属于注入式攻击,这种攻击是因为在项目中没有将代码与数据(比如用户敏感数据)隔离,在读取数据的时候,错误的将数据作为代码的一部分执行而导致的。

典型的例子就是当对SQL语句进行字符串拼接的时候,直接使用未转义的用户输入内容作为变量。这时,只要在sql语句的中间做修改,比如加上drop、delete等关键字,执行之后后果不堪设想。

说到这里,那么该怎么处理这种情况呢?三个方面:

1、过滤用户输入参数中的特殊字符,降低风险。

2、禁止通过字符串拼接sql语句,要严格使用参数绑定来传入参数。

3、合理使用数据库框架提供的机制。就比如Mybatis提供的传入参数的方式 #{},禁止使用${},后者相当于是字符串拼接sql,要使用参数化的语句。

总结下,就是要正确使用参数化绑定sql变量。

XSS

XSS:跨站脚本攻击,Cross-Site Scripting,为了和前端的css避免重名,简称为XSS,是指通过技术手段,向正常用户请求的HTML页面中插入恶意脚本,执行。

这种攻击主要是用于信息窃取和破坏等目的。比如2011年的微博XSS攻击事件,攻击者利用了微博发布功能中未对action-data漏洞做有效的过滤,在发布微博信息的时候带上了包含攻击脚本的URL,用户访问就会加载恶意脚本,导致大量用户被攻击。

关于防范XSS上,主要就是通过对用户输入的数据做过滤或者是转义,可以使用框架提供的工具类HtmlUtil。另外前端在浏览器展示数据的时候,要使用安全的API展示数据。比如使用innerText而不是innerHTML。

CSRF

跨站请求伪造,在用户并不知情的情况下,冒充用户发送请求,在当前已经登录的web网站上执行恶意操作,比如恶意发帖,修改密码等。

大致来看,与XSS有重合的地方,前者是黑客盗用用户浏览器中的登录信息,冒充用户去执行操作。后者是在正常用户请求的HTML中放入恶意代码,

XSS问题出在用户数据没有转义,过滤;CSRF问题出现在HTTP接口没有防范不守信用的调用。

防范CSRF的漏洞方式:

1、CSRF Token验证,利用浏览器的同源限制,在HTTP接口执行前验证Cookie中的Token,验证通过才会继续执行请求。

2、人机交互,例如短信验证码、界面的滑块。

之前在会议上也有一个思考,在人机验证这块,如果不用验证码的方式,用界面上的滑块这种方式,而且滑块还是第三方的。在APP的注册、登录使用这种人机验证的方式的话,如果第三方出现了问题,那么自己的APP就完全崩掉了,发版之后的APP什么也改不了。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2020-12-08 08:14:11

SQL注入数据库

2014-07-29 15:20:15

2024-10-12 10:57:21

2019-09-17 10:06:46

数据库程序员网络安全

2021-01-15 07:44:21

SQL注入攻击黑客

2019-01-15 09:24:07

2024-01-17 08:18:14

RPAJava技术

2010-09-09 17:22:14

2012-11-08 14:55:10

2021-08-02 15:40:20

Java日志工具

2023-03-10 19:36:47

2020-06-05 18:57:41

BiLSTMCRF算法

2009-12-16 14:59:21

红帽Linux认证

2009-11-17 14:23:30

路由器结构

2022-03-30 15:25:28

链接过程计算机系统程序

2010-01-06 16:23:45

Linux常见问题

2019-11-28 08:59:03

SQL注入网络攻击网络安全

2009-11-23 11:08:21

ADSL宽带路由器设置

2023-05-29 08:11:42

@Value注解Bean

2024-04-28 12:55:46

redis频道机制
点赞
收藏

51CTO技术栈公众号