Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XSS攻击 #20

Open
zhangyanan0525 opened this issue Sep 16, 2018 · 1 comment
Open

XSS攻击 #20

zhangyanan0525 opened this issue Sep 16, 2018 · 1 comment

Comments

@zhangyanan0525
Copy link
Owner

XSS攻击

跨站脚本攻击(Cross-Site Scripting)

XSS原理

XSS漏洞的产生原因是Web应用未对用户提交请求的数据做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“<”),并将未经转义的恶意代码输出到第三方用户的浏览器解释执行。

xss攻击类型

1.非持久型XSS攻击
浏览器每次都要在参数中提交恶意数据才能触发的跨站脚本漏洞
2.持久型XSS攻击
通过提交恶意数据到存储器(比如数据库),Web应用程序输出的时候是从存储器中读出恶意数据输出到页面的一类跨站脚本漏洞

常见的xss攻击方法

1.绕过XSS-Filter,利用<>标签注入Html/JavaScript代码;
2.利用HTML标签的属性值进行xss攻击。例如:;(当然并不是所有的Web浏览器都支持Javascript伪协议,所以此类XSS攻击具有一定的局限性)
3. 空格、回车和Tab。如果XSS Filter仅仅将敏感的输入字符列入黑名单,比如javascript,用户可以利用空格、回车和Tab键来绕过过滤,例如:<img src=“javas cript:alert(/xss/);”/>;
4. 利用事件来执行跨站脚本。例如:,当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防御方法

1.在表单提交或者url参数传递前,对需要的参数进行过滤
2.对输出到Web网页的字符串,使用编码(HTMLEncode)进行处理
3.HttpOnly Cookie
将重要的cookie标记为http only, 这样的话当浏览器向Web服务器发起请求的时就会带上cookie字段,但是在脚本中却不能访问这个cookie,这样就避免了XSS攻击利用JavaScript的document.cookie获取cookie

@zhangyanan0525
Copy link
Owner Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant