在互联网时代,信息安全成为一个非常重要的问题,所以我们需要了解前端的安全问题,并且知道如何去预防、修复安全漏洞。
在前端有几种常见的攻击方式:XSS、CSRF、点击劫持、中间人攻击、SQL注入、OS命令注入。
什么是XSS攻击?
XSS全称Cross Site Scripting,跨站脚本攻击,为了跟CSS区分,所以叫XSS。简单地说,XSS就是攻击者将恶意脚本注入到网页中,当用户浏览该网页时,嵌入到Web里的脚本代码就会被执行,对用户浏览器进行控制或获取到用户的隐私数据。
XSS攻击类型有哪些?1、非持久型XSS(反射型XSS)非持久型XSS,一般是通过给别人发送带有恶意脚本代码参数的URL,诱导用户访问该链接,然后恶意代码被HTML解析执行。
2、持久型XSS(存储型XSS)
持久型是恶意代码被服务端写入到数据库中,这样当每个浏览器请求数据时都会被攻击到。持久型XSS攻击不需要诱骗点击,黑客只需要在提交表单的地方完成注入即可,但是这种XSS攻击的成本相对很高。
如何防御XSS攻击?
通常使用两种方式来防御XSS攻击:
1、转义字符
对用户的输入应该永远保持不信任态度,最普遍的做法就是转义输入输出的内容,对于引号、尖括号、斜杠进行转义:
function a(str) {
if(!str) return ''
str = str.replace(/&/g, '&')
str = str.replace(/</g, '<')
str = str.replace(/>/g, '>')
str = str.replace(/"/g, '&quto;')
str = str.replace(/'/g, ''')
str = str.replace(/`/g, '`')
str = str.replace(/\//g, '/')
return str
}
2、CSP
CSP全称Content Security Policy,内容安全策略,用于指定哪些内容可执行,也就是添加白名单,它是一个http头。
开启CSP的两种方式:
Content-Security-Policy
meta
标签的方式<meta http-equiv="Content-Security-Policy">
http header举栗:
Content-Security-Policy: default-src 'self'
Content-Security-Policy: img-src https://*
Content-Security-Policy: child-src 'none'
什么是CSRF?
CSRF是Cross Site Request Forgery,跨站请求伪造,是一种常见的Web攻击。原理是构造一个后端请求地址,诱导用户点击或通过某种途径自动发起请求。如果用户是在登陆状态下,后端就会认为是用户在操作,从而完成非法操作。
攻击过程为1、用户登陆A网站;2、A网站确认身份;3、B网站向A网站发送请求
如何防御CSRF攻击?
SCRF攻击有以下几种防范措施:
什么是点击劫持?
点击劫持是一种视觉欺骗的攻击手段。它的原理是通过iframe标签嵌套,然后将其透明度设置为0,在页面透出一个按钮诱导用户点击。
(个人经历,在手机网页端看小说的时候,点击下一章,然后就会跳转到另一个页面,返回原网页,长按就会显示图片的大小,几乎覆盖了整个页面)
防御措施
X-FRAME-OPTIONS
禁止内嵌X-FRAME_POTIONS
是一个http响应头,有三个值可选:
中间人攻击是攻击方同时与客户端和服务端建立连接,并让双方认为连接是安全的。中间人监控客户端和服务端之间的通信,同时也能获取到传输的信息。
防御中间人攻击,只需要增加一条安全通道传输信息。
SQL攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制web应用程序后边的数据库服务器。
SQL注入攻击可以通过多种方式执行:
防范措施:
OS命令注入攻击是指通过web应用,执行非法的操作系统命令达到攻击的命令。只要在能调用Shell函数的地方就存在被攻击的风险。
由于能够获取直接执行系统命令的能力,所以OS命令注入攻击之后,基本上可以“为所欲为”。
防御措施
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8