XSS攻击和CSRF攻击(浅显易懂)

1、XSS攻击(跨站脚本攻击)

        往web页面(包含HTML和js文件)嵌入可执行的代码(js)

为什么选择攻击js文件?

        在网络传输的时候,js文件是可以被下载或者是通过Ajax提交的

        js安全性比较弱

危害性:

(1)攻击者能够通过模拟GET、POST请求操作用户的浏览器;

(2)用户提交的数据,未经处理之前,是可以被获取到的 (js obj.value);

(3)XSS钓鱼,利用js在当前页面上“画出”一个伪造的登录框,当用户在登录框中输入用户名和密码后,用户名和密码将被发送至黑客的服务器上;

(4)强行改变程序的执行方式(打开一个不健康的网页)

        XSS本质上是一种针对HTML的注入攻击,注入攻击的本质,是把用户输入的数据当做代码执行。这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。在对抗注入攻击时,可以从以上两个关键条件入手。

预防方案:

(1)让运维将js等文件设置为只读,只在需要时更改为可编写的;

(2)通过后台程序,写一套检测程序,检测文件大小的改变,文件大小一旦发生变化,并且不是本公司人员进行文件修改时,立即发出警报并更换文件;

(3)校验用户输入,过滤特殊字符;

(4)输出检查,光有输入检查还不够,在变量输出到HTML页面时,可以使用编码或者转义的方式来预防XSS攻击。

2、CSRF(跨站点请求伪造)

        攻击者伪造一个请求,诱使用户去触发这个请求,以此冒充用户身份向服务器发送伪造请求,并且该伪造请求被服务器成功执行。

危害:

        攻击者盗用用户身份发送恶意请求,比如删除你的个人信息,修改密码,购买商品,虚拟货币或者银行转账等等,太多了,细思极恐!

        CSRF攻击的目标,一般都会产生“写数据”操作的URL,比如增、删、改;而“读数据”操作并不是CSRF攻击的目标,因为在CSRF的攻击过程中,攻击者无法获取到服务器端返回的数据,攻击者只是借用户之手触发服务器动作。

预防方案:

(1)验证码,CSRF攻击的过程,往往是在用户不知情的情况下构造了网络请求,而验证码则强制用户必须与应用进行交互,才能完成最终请求;

(2)Referer Check可以被用于检查请求是否来自合法的“源”;

(3)新增token参数,CSRF之所以能攻击成功,其本质原因是重要操作的所有参数都是可以被攻击者猜测到的,而这个token是随机的,不可预测的,攻击者将无法再构造出一个完整的URL实施CSRF攻击。

你可能感兴趣的:(Web安全,xss,csrf,前端)