一、对于XSS防御:

  1、不要信任任何外部传入的数据,针对用户输入作相关的格式检查、过滤等操作,以及转义字符处理。最普遍的做法就是转义输入输出的内容,对于括号,尖括号,斜杠进行转义

function escape(str) {
str = str.replace(/&/g, '&')
str = str.replace(/</g, '&lt;')
str = str.replace(/>/g, '&gt;')
str = str.replace(/"/g, '&quto;')
str = str.replace(/'/g, '&#;')
str = str.replace(/`/g, '`')
str = str.replace(/\//g, '/')
return str
} // 通过转义可以将攻击代码 变成 -> &lt;script&gt;alert(1)&lt;/script&gt;
escape('<script>alert(1)</script>')

  但是对于显示富文本来说,显然不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。对于这种情况,通常采用白名单过滤的办法,当然也可以通过黑名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式。

const xss = require('xss')
let html = xss('<h1 id="title">XSS Demo</h1><script>alert("xss");</script>')
// -> <h1>XSS Demo</h1>&lt;script&gt;alert("xss");&lt;/script&gt;
console.log(html)

  示例使用了 js-xss 来实现,可以看到在输出中保留了 h1 标签且过滤了 script 标签。

  2、可以使用CSP内容安全策略

二、对于CSRF防御:

  1、get请求不对数据进行修改

  2、不让第三方网站访问到Cookie,安全地使用 Cookie,设置Cookie为HttpOnly,禁止JavaScript操作Cookie;

  3、阻止第三方网站请求接口,不要信任任何传入的第三方数据,使用 CORS,设置 Access-Control-Allow-Origin;

  4、请求时附带验证信息,比如验证码或者Token

  5、防止网页被其他网站内嵌为iframe,服务器端设置 X-Frame-Options 响应头,防止页面被内嵌。

三、对于点击劫持防御:

  1、X-FRAME_OPRIONS

  X-FRAME_OPRIONS (X-Frame-Options)这个可以说是为了解决ClickJacking而生的,是一个HTTP响应头,在现代的浏览器中有一个较好的支持,它就是为了防御用iframe嵌套的点击劫持攻击。该响应头有三个值可选,分别是:

  (1)DENY 表示页面不允许通过iframe的方式展示,(浏览器会拒绝当前页面加载的任何iframe)
  (2)SAMEORIGIN 表示页面可以在相同域名下通过iframe的方式展示,(frame页面的地址只能为同源域名下的页面)

  (3)ALLOW-FROM 表示页面可以在指定来源的iframe中展示

// 配置方法
// Apache配置
Header always append X-Frame-Options SAMEORIGIN // nginx配置
add_header X-Frame-Options SAMEORIGIN;

四、对于中间人攻击防御

  防御中间人攻击其实并不难,只需要增加一个安全通道来传输信息。HTTPS 就可以用来防御中间人攻击,但是并不是说使用了 HTTPS 就可以高枕无忧了,因为如果你没有完全关闭 HTTP 访问的话,攻击方可以通过某些方式将 HTTPS 降级为 HTTP 从而实现中间人攻击。

  推荐讲的比较好的一篇博客:https://blog.csdn.net/qq_37288477/article/details/86601005

如何防范web前端安全攻击的更多相关文章

  1. 站点的安全防范都是后端的职责?非也,Web前端安全同样不可忽视

    前言 随着网络的快速普及,网络安全问题的受害者不再只是政府.企业等集体,每一个接触网络的普通人都有可能成为网络攻击的受害者.随着网络的普及,黑客进行网络攻击的手段越来也多,越来越复杂.以网站的攻击为例 ...

  2. [web安全]Web应用漏洞攻击分析与防范

    网站攻击主要分为以下几类: (1) sql注入攻击 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.它是利 ...

  3. web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入

    web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...

  4. 【理论面试篇】收集整理来自网络上的一些常见的 经典前端、H5面试题 Web前端开发面试题

    ##2017.10.30收集 面试技巧 5.1 面试形式 1)        一般而言,小公司做笔试题:大公司面谈项目经验:做地图的一定考算法 2)        面试官喜欢什么样的人 ü  技术好. ...

  5. web 前端安全问题

    转载自:https://segmentfault.com/a/1190000006672214?utm_source=weekly&utm_medium=email&utm_campa ...

  6. web前端开发与iOS终端开发的异同[转]

    * {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...

  7. 【WEB前端开发最佳实践系列】JavaScript篇

    一.养成良好的编码习惯,提高可维护性 1.避免定义全局变量和函数,解决全局变量而导致的代码“污染”最简单的额方法就是把变量和方法封装在一个变量对象上,使其变成对象的属性: var myCurrentA ...

  8. Web 前端攻防(2014版)-baidu ux前端研发部

    http://fex.baidu.com/articles/page2/ Web 前端攻防(2014版) zjcqoo | 20 Jun 2014 禁止一切外链资源 外链会产生站外请求,因此可以被利用 ...

  9. web前端安全机制问题全解析

    摘要 web前端安全方面技术含有的东西较多,这里就来理一理web安全方面所涉及的一些问题 目录[-] 摘要 web前端安全方面技术含有的东西较多,这里就来理一理web安全方面所涉及的一些问题 web安 ...

随机推荐

  1. Oracle学习笔记(四)

    Oracle中的体系结构: oracle体系结构中的进程: 共享池相关的优化: drop table t purge; create table t as select * from dba_obje ...

  2. java基础 Arrays

    package cn.mantishell.day08.demo04; import java.util.Arrays; /** * java.util.Arrays是一个与数组相关的工具类,里面提供 ...

  3. 1+X证书学习日志——javascript基础

    js javascript js的组成: ECMAscript DOM BOM js放置的位置 <script></script> <script src="路 ...

  4. Java 之 Response 文件下载案例

    文件下载需求: 1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载 分析过程: 1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析,则弹出下载提示框 ...

  5. iOS学习——iOS项目增加新的字体

    基本思路 在项目开发过程中,iOS系统自带的字体库可能不适应需求,需要导入其他的字体库.下面是iOS项目增加新的字体的基本思路,基本上分为三步: 将字体库添加到项目中 在info.plist中添加所需 ...

  6. IVS_技术

    视频监控技术按照设备发展过程分为三个阶段:模拟视频监控.数字视频监控.智能视频监控,如下图: 模拟视频监控 第一代视频监控系统也叫做闭路电视监控系统,简称CCTV(Close Circuit Tele ...

  7. Redis中如何发现并优化big key?

    Redis中的大key一直是重点需要优化的对象,big key既占用比较多的内存,也可能占用比较多的网卡资源,造成redis阻塞,因此我们需要找到这些big key进行优化 一.寻找big key 通 ...

  8. 通过cmd命令将jar放到maven仓库

    如:将jar包直接拷贝到mave仓库的文件夹是不能直接使用的,需要通过cmd命令将jar生产maven可用的 mvn install:install-file -Dfile=iTextAsian-1. ...

  9. storm整合kafka storm-kafka-client

    pom.xml-注意jar-log4j---------------------<dependencies> <dependency> <groupId>org.a ...

  10. Codeforces E. Alyona and a tree(二分树上差分)

    题目描述: Alyona and a tree time limit per test 2 seconds memory limit per test 256 megabytes input stan ...