详解XSS和CSRF

关于XSS

xss是跨站脚本攻击,攻击者通过“注入”,在网页中插入恶意代码,从而被浏览器执行所造成的一种攻击方式。

举一些实例,它可以进行如下操作:

1.窃取用户的cookie信息。恶意代码可以通过执行 ”doccument.cookie“获取用户的cookie信息,然后发送给恶意服务器

2.监听用户的输入行为。使用 "addEventListener"接口来监听键盘事件,比如可以获取用户输入的银行卡及密码等个人信息。

3.在页面生成浮窗广告或执行alert弹窗,造成不好的用户体验。

XSS类型

XSS攻击可以分为三类:反射型,存储型,DOM型

1.反射型XSS攻击

反射型攻击是指用户提交恶意代码给服务器,服务器又将恶意代码反射给浏览器端,例如在url请求中加上script代码,那么浏览器在访问相应url时就会执行恶意代码

2.存储型XSS攻击

详解XSS和CSRF_第1张图片

如上图所示,攻击者利用站点漏洞将恶意代码提交到网站的数据库中,当用户进行访问时,就会执行相应的恶意代码,脚本代码会将用户信息上传到黑客服务器。

在实际应用中,如果在登录页面,用户名输入框中输入代码,服务端在存储相应信息之后,返回成功的登录名,就会执行这段代码,在页面形成弹窗。

存储型攻击与反射型攻击的区别在于,服务器端是否存储了相应的恶意代码。

3.DOM型XSS攻击

 这是发生在前端的攻击,通过恶意脚本修改页面的DOM节点,从js中输出数据到HTML页面中

与普通XSS不同的是,DOM XSS是在浏览器的解析中改变页面DOM树,且恶意代码并不在返回页面源码中回显,这使我们无法通过特征匹配来检测DOM XSS

基于DOM攻击大致需要经历以下几个步骤

  1. 攻击者构造出特殊的URL,其中包含恶意代码
  2. 用户打开带有恶意代码的URL
  3. 用户浏览器接受到响应后执行解析,前端JavaScript取出URL中的恶意代码并执行
  4. 恶意代码窃取用户数据并发送到攻击者的网站,冒充用户行为,调用目标网站接口执行攻击者指定的操作

防御办法

1.对输入进行检查和转码

输入检查一般是检查用户输入的数据是都包含一些特殊字符,如 <>'"等。如果发现特殊字符,则将这些字符过滤或编码。这种可以称为 “XSS Filter”。

安全的编码函数

针对HTML代码的编码方式是 HtmlEncode(是一种函数实现,将字符串转成 HTMLEntrities)

& --> &
< --> <
> --> >
" --> "

相应的, JavaScript的编码方式可以使用 JavascriptEncode。

假如说用户输入了 ,我们要对用户输入的内容进行过滤(如果包含了 

你可能感兴趣的:(大前端,服务器,运维)