前端安全之 xss crsf sql注入攻击与防御

一.xss攻击(Cross Site Scripting)

百度百科:XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。攻击类型分为“反射型攻击” 和 “存储型攻击”

反射型攻击:将有危害的xss代码写入服务器,服务器把xss代码返回浏览器,浏览器把xss当成js解析并执行的的攻击方式称为反射型攻击:

node环境获取xss代码请求


在浏览器中地址栏中输入xss代码,从服务器返回并执行,完成一次攻击

 存储型攻击:存储型xss攻击与反射型xss攻击的差别仅在于,提交的xss代码会存储在(数据库,内存,文件系统等),下次请求目标时不用再次提交xss代码。

(比如:评论的评论列表展示的网页,当有用户评论文章时写入有危害的xss代码时,这条评论的xss代码会被写入数据库,在渲染到评论列表时,xss代码会执行,完成攻击)

xss攻击的危害:xss攻击可以获得页面的dom节点,和修改页面内容,因此xss攻击可以盗用cookie,篡改页面内容,获取个人隐私信息如银行卡密码等。

xss攻击的防御:

1.转义,对敏感字符转义,把 > 字符转为 ‘&gt;’ < 转为‘&lt;’


对>和<符号进行转义

2.过滤,过滤敏感标签或标签属性

二.CSRF(Cross-site request forgery)

  百度百科:    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性

csrf危害 :利用用户登陆态登陆,用户不知情,盗用用户资金,损害网站信誉等。

css攻击自述

csrf攻击过程:用户访问a网站并登陆,a网站返回cookie给用户,用户在没有退出a网站的情况下,去访问攻击网站b,b攻击网站就会携带用户的cookie去攻击目标(a)网站,完成scrf攻击。

scrf攻击防御:要想防御scrf攻击,首先要知道scrf攻击的特点 。


  1.攻击网站b携带目标网站(a ) 的cookie

可用cookie中的sameSite属性防止第三方请求,但只有chrome支持

  2.攻击网站不访问目标网站(a)的前端

    方法一:可用验证码防御。    但会影响用户使用体验

     方法二:可用token,在后端生成一个随机数,一份放在cookie中,一份存在浏览器中,后台控制只有这两

      个数相等的时候才可以进行留言等 操作。缺点:如果用户在浏览器中对该网站打开多个界面,会只 

       有最后一个页面能有效的操作

  3.请求头中的referer属性为b网站

      验证请求头中的的referer属性,禁止来自第三方网站的请求

三:sql攻击

定义:输入参数未经过滤,然后直接拼接到sql语句当中,解析执行,达到预想之外的效果称为sql攻击

举个栗子:下面这种情况:我在输入用户账号的时候,在后面加入了一个#号

这样如果后代的执行 的mysql语句就会是这样:                                                                                                  select * from userdatabase where username=1550976562# and password=' ',使用过mysql的用户都知道#号是mysql的注释,这样后面的 and password=' '就会被当做注释,不会被执行,因此攻击者就可以不用密码登录你的网站了。

对SQL注入的防御方法主要有:

1. 字符串长度验证,仅接受指定长度范围内的变量值。sql注入脚本必然会大大增加输入变量的长度,通过长度限制,比如用户名长度为 8 到 20 个字符之间,超过就判定为无效值。

2. 对单引号和双"-"、下划线、百分号等sql注释符号进行转义

3. 对接收的参数进行类型格式化,如id参数值获取后,进行int类型转换

4. 永远不要使用动态拼装SQL,推荐使用参数化的SQL或者直接使用存储过程进行数据查询存取。sql注入最主要的攻击对象就是动态拼装的SQL,通过参数化查询可以极大减少SQL注入的风险。

5. 永远不要使用管理员权限的数据库连接(sa、root、admin),为每个应用使用单独的专用的低特权账户进行有限的数据库连接。

6. 不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。这样对方就算获取到整个表的数据内容,也没什么价值。

7. 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息输出到日志而不是在页面中展示。

8. 做好XSS跨站攻击的防护,防止攻击者伪造管理员信息进入系统后台

9. 不管客户端是否做过数据校验,在服务端必须要有数据校验(长度、格式、是否必填等等)

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