安全类
Posted bestchenyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全类相关的知识,希望对你有一定的参考价值。
1、CSRF:跨站请求伪造,cross-site request forgery
2、CSRF攻击原理:
(1)用户登录网站A
(2)网站A下发cookie
(3)用户访问网站B
(4)网站B中有引诱点击,指向网站A中有漏洞的接口
(5)点击之后,浏览器上传cookie至网站A
必要条件:1、用户要在注册网站登录过 2、网站A有漏洞接口
3、防御措施:
(1)Token验证:访问接口,浏览器自动生成cookie,但是没有手动上传token,token是你访问网站的服务器向本地存储一个token,访问时没带token就不能通过验证。引诱连接会自动携带cookie而不会携带token
(2)Refer验证:判断页面来源
(3)隐藏令牌:放在HTTP head中
4、XSS:跨站脚本(Cross-site scripting,通常简称为XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了html以及用户端脚本语言。
XSS 常见攻击方法
1、绕过 XSS-Filter,利用 <> 标签注入 Html/javascript 代码;
2、利用 HTML 标签的属性值进行 XSS 攻击。例如:<img src=“javascript:alert(‘xss’)”/>
;(当然并不是所有的 Web 浏览器都支持 Javascript 伪协议,所以此类 XSS 攻击具有一定的局限性)
3、空格、回车和 Tab。如果 XSS Filter 仅仅将敏感的输入字符列入黑名单,比如 javascript,用户可以利用空格、回车和 Tab 键来绕过过滤,例如:<img src=“javas cript:alert(/xss/);”/>
;
4、利用事件来执行跨站脚本。例如:<img src=“#” onerror= “alert(1)”/>
,当 src 错误的视乎就会执行 onerror 事件;
5、利用 CSS 跨站。例如:body {backgrund-image: url(“javascript:alert(‘xss’)”)}
;
6、扰乱过滤规则。例如:<IMG SRC=“javaSCript: alert(/xss/);”/>
;
7、利用字符编码,通过这种技巧,不仅能让 XSS 代码绕过服务端的过滤,还能更好地隐藏 Shellcode;( JS 支持 unicode、eacapes、十六进制、十进制等编码形式);
8、拆分跨站法,将 XSS 攻击的代码拆分开来,适用于应用程序没有过滤 XSS 关键字符(如<、>)却对输入字符长度有限制的情况下;
9、DOM 型的 XSS 主要是由客户端的脚本通过 DOM 动态地输出数据到页面上,它不依赖于提交数据到服务器,而是从客户端获得DOM中的数据在本地执行。容易导致 DOM 型的 XSS 的输入源包括:Document.URL、Location(.pathname|.href|.search|.hash)、Document.referrer、Window.name、Document.cookie、localStorage/globalStorage
;
XSS 如何防御?
从上面的介绍可知,XSS 漏洞是由于对用户提交的数据没有经过严格的过滤处理造成的,所以防御的原则就是不相信用户输入的数据,对输入进行过滤,对输出进行编码。
1、使用 XSS Filter
针对用户提交的数据进行有效的验证,只接受我们规定的长度或内容的提交,过滤掉其他的输入内容。比如:
-
表单数据指定值的类型:年龄只能是 int 、name 只能是字母数字等。
-
过滤或移除特殊的 html 标签:
<script>
、<iframe>
等。 -
过滤 js 事件的标签:
onclick
、onerror
、onfocus
等。
2、html 实体
当需要往 HTML 标签之间插入不可信数据的时候,首先要做的就是对不可信数据进行 HTML Entity 编码,在 html 中有些字符对于 HTML 来说是具有特殊意义的,所以这些特殊字符不允许在文本中直接使用,需要使用实体字符。 html 实体的存在是导致 XSS 漏洞的主要愿意之一,因此我们需要将实体转化为相应的实体编号。
显示结果 | 描述 | 实体编号 |
---|---|---|
空格 |   ; | |
< | 小于 | < ; |
> | 大于 | > ; |
& | 和 | & ; |
‘‘ | 引号 | " ; |
3、JavaScript编码
这条原则主要针对动态生成的JavaScript代码,这包括脚本部分以及HTML标签的事件处理属性(如onerror, onload等)。在往JavaScript代码里插入数据的时候,只有一种情况是安全的,那就是对不可信数据进行JavaScript编码,并且只把这些数据放到使用引号包围起来的值部分(data value)之中,除了上面的那些转义之外,还要附加上下面的转义: 转成
\\
/
转成 /
;
转成 ;
(全角;)
注意:在对不可信数据做编码的时候,不能图方便使用反斜杠 对特殊字符进行简单转义,比如将双引号
”
转义成 ”
,这样做是不可靠的,因为浏览器在对页面做解析的时候,会先进行HTML解析,然后才是JavaScript解析,所以双引号很可能会被当做HTML字符进行HTML解析,这时双引号就可以突破代码的值部分,使得攻击者可以继续进行XSS攻击;另外,输出的变量的时候,变量值必须在引号内部,避免安全问题;更加严格的方式,对除了数字和字母以外的所有字符,使用十六进制xhh 的方式进行编码。
4、Http Only cookie
许多 XSS 攻击的目的就是为了获取用户的 cookie,将重要的 cookie 标记为 http only,这样的话当浏览器向服务端发起请求时就会带上 cookie 字段,但是在脚本中却不能访问 cookie,这样就避免了 XSS 攻击利用 js 的 document.cookie
获取 cookie。
以上是关于安全类的主要内容,如果未能解决你的问题,请参考以下文章
elasticsearch代码片段,及工具类SearchEsUtil.java
《安富莱嵌入式周报》第279期:强劲的代码片段搜索工具,卡内基梅隆大学安全可靠C编码标准,Nordic发布双频WiFi6 nRF7002芯片
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段