web前端攻击技术与防范——XSS、CSRF、网络劫持、控制台注入、钓鱼

web攻击技术

我了解到的web安全方面的一些攻击有:

XSS攻击
CSRF攻击
网络劫持攻击
控制台注入代码
钓鱼

XSS攻击(cross-site script)跨站脚本攻击

1、XSS攻击形式:

主要是通过html标签注入,篡改网页,插入恶意的脚本,前端可能没有经过严格的校验直接就进到数据库,数据库又通过前端程序又回显到浏览器

例如一个留言板:
如果内容是
hello!<script type="type/javascript src="恶意网址"></script>
这样会通过前端代码来执行js脚本,如果这个恶意网址通过cookie获得了用户的私密信息,那么用户的信息就被盗了

2、攻击的目的:

攻击者可通过这种方式拿到用户的一些信息,例如cookie 获取敏感信息,甚至自己建网站,做一些非法的操作等;或者,拿到数据后以用户的身份进行勒索,发一下不好的信息等。

3、攻击防御

首先前端要对用户输入的信息进行过滤,可以用正则,通过替换标签的方式进行转码或解码
例如<> 空格 & '' ""等替换成html编码

htmlEncodeByRegExp:function (str){  
       var s = "";
       if(str.length == 0) return "";
       s = str.replace(/&/g,"&amp;");
       s = s.replace(/</g,"&lt;");
       s = s.replace(/>/g,"&gt;");
       s = s.replace(/ /g,"&nbsp;");
      s = s.replace(/\'/g,"&#39;");
      s = s.replace(/\"/g,"&quot;");
      return s;  
 },
    
其次在java后端还要进行安全防御,具体可以看一下这个http://blog.csdn.net/qq_34120041/article/details/76890092

CSRF攻击(cross site request forgery,跨站请求伪造)

CSRF也是一种网络攻击方式,比起xss攻击,是另外一种更具危险性的攻击方式,xss是站点用户进行攻击,而csrf是通过伪装成站点用户进行攻击,而且防范的资源也少,难以防范
csrf攻击形式:攻击者盗用用户的身份信息,并以用户的名义进行发送恶意的请求等,例如发邮件,盗取账号等非法手段

例如:你登录网站,并在本地种下了cookie
如果在没退出该网站的时候 不小心访问了恶意网站,而且这个网站需要你发一些请求等
此时,你是携带cookie进行访问的,那么你的种在cookie里的信息就会被恶意网站捕捉到,那么你的信息就被盗用,导致一些不法分子做一些事情

cookie是不能跨域访问的,为什么会有csrf攻击?

就是如果用户在a网站登录且生成了授权的cookies,然后访问b网站,b站故意构造请求a站的请求,如删除操作之类的,用script,img或者iframe之类的加载a站这个地址,浏览器会附带上a站此登录用户的授权cookie信息,这样就构成crsf,会删除掉当前用户的数据。

攻击防御:

1、验证HTTP Referer字段

在HTTP头中有Referer字段,他记录该HTTP请求的来源地址,如果跳转的网站与来源地址相符,那就是合法的,如果不符则可能是csrf攻击,拒绝该请求

不过这个方法也有问题。有些浏览器出于隐私方面的考虑,会移除掉referer header。

2、在请求地址中添加token并验证

这种的话在请求的时候加一个token,值可以是随机产生的一段数字,
token是存入数据库之后,后台返给客户端的,如果客户端再次登录的时候,
后台发现token没有,或者通过查询数据库不正确,那么就拒绝该请求

如果想防止一个账号避免在不同的机器上登录,那么我们就可以通过token来判断,
如果a机器登录后,我们就将用户的token从数据库清除,从新生成,
那么另外一台b机器在执行操作的时候,token就失效了,只能重新登录,这样就可以防止两台机器登同一账号

3、在HTTP头中自定义属性并验证(Cookie-to-header token)

该方法是为每个session生成一个csrf_token,随后将csrf_token保存到cookie中,之后通过javascript在每次请求时将csrf_token设置到http header中的X-Csrf-Token(自定义,可以是其他字段)属性中。再在服务器端比较Cookie的csrf_token与header中的token是否一致。

如果说通过每次请求的时候都得加token那么各个接口都得加很麻烦,
那么我们通过http的请求头来设置token
例如:
    $.ajax({
        url: '/v1/api',
        dataType: 'json',
        data: param,
        type:'post',
        headers: {'Accept':'application/json','X-Csrf-Token':csrf_token}
        success:function(res){
            console.log(res)
        }
    })

有些读者可能会问如果设置在Cookie中,那么Malicious.com岂不是可以利用Cookie中的值来设置X-Csrf-Token的值么?

其实尽管可以从Malicious.com发送给Trusted.com带有含有csrf_token的Cookie,但是根据同源策略,Javascript无法从Malicious.com读取或者写入Trusted.com的Cookie。所以Malicious.com无法知道正确的csrf_token是什么,也不能够正确的修改Http-Header的X-Csrf-Token属性。

4、客户端防御

比如Firefox有个插件将受信任的网站和不信任的网站区分对待。然后当用户从不受信任的网站往受信任的网站发送信息时,将验证信息移除。

5、Cookie 的 SameSite 属性

网络劫持攻击

网络劫持攻击这种攻击主要是通过一些代理服务器,或者wifi等有中间件的网络请求,进行劫持,不法分子通过这种方式获取到用户的信息,那么我们该怎么防御呢?
最好是采用https进行加密,这种通过请求网络地址攻击的我们可以通过对http进行加密,来防范,这样不法分子即使或得到,也无法解密

控制台注入代码

这种就是不法分子通过各种提示诱骗用户在控制台做一些操作,从而获取用户信息,那么我们最好在控制台对用户进行友好的提示,不要轻易相信这种提示等。

钓鱼

钓鱼!一个传统的攻击方式,也是通过人性的弱点来诱骗用户登录一些不法网站,我们要科学上网,不要被钓...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355