防止XSS漏洞攻击常用解决方案
漏洞通用描述
跨站脚本攻击(Cross Site Scripting),简称XSS漏洞。
该页面直接将用户在 HTML 页面中的输入(通常是参数值)加载到前端页面,没有预先加以清理。 如果脚本在响应页面中返回由 JavaScript 代码组成的输入,浏览器便可以执行此输入。 因此,有可能形成指向站点的若干链接,且其中一个参数包含恶意的 JavaScript 代码。 该代码将在站点上下文中(由用户浏览器)执行,这使得该代码可以直接访问用户当前cookie,继而使用各种方法发送到攻击者服务器,从而盗取用户账号。
任何存在输入/输出方法(包括GET与POST)的页面皆可能存在XSS漏洞,如留言回复、在线聊天、内容发布等。
攻击依照下列方式继续进行:攻击者诱惑合法用户单击攻击者生成的链接。 用户单击该链接时,便会生成对于 Web 站点的请求,其中的参数值含有恶意的 JavaScript 代码。 如果 Web 站点将这个参数值嵌入在响应的 HTML 页面中(这正是站点问题的本质所在),恶意代码便会在用户浏览器中运行。
常见修复方案
注: 修复时请不要只针对测试用例中的关键字进行屏蔽(如: 只过滤alert)
如果是 json 或 jsonp 接口出现XSS问题,请检查一下header头中的Content-type是否已设置为application/json,正常情况下Content-type为json的页面不会引起XSS攻击
XSS修复原理:
过滤用户输入的内容,检查用户输入的内容中是否有非法内容。如<>(尖括号)、"(引号)、 '(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等,如果参数为int类型,则严格限定只允许0-9的整型数字。
JAVA语言的业务 可以使用基础安全部开发的WAQ安全库来修复XSS漏洞
- HTML编码:WAQ.forXSS().filterHTML
- URL编码:WAQ.forXSS().filterURL
- Javascript转义 WAQ.forXSS().filterJS
- 富文本过滤 WAQ.forXSS().filterRichText
PHP语言,无富文本需求的业务 可以使用下面这些函数对xss漏洞的参数进行过滤
- htmlspecialchars() 函数,用于转义处理在页面上显示的文本。
- htmlentities() 函数,用于转义处理在页面上显示的文本。
- strip_tags() 函数,过滤掉输入、输出里面的恶意标签。
- header() 函数,使用header("Content-type:application/json"); 用于控制 json 数据的头部,不用于浏览。
- urlencode() 函数,用于输出处理字符型参数带入页面链接中。
- intval() 函数用于处理数值型参数输出页面中。
PHP语言、有富文本需求的业务
如要使用一些常用的 html 标签,以美化页面显示,如留言、小纸条。那么在这样的情况下,要采用白名单的方法使用合法的标签显示,过滤掉非法的字符。
Node.js语言的业务
使用node-validator,具体可参考nodejs官网手册
Python语言的业务
一般框架会自带一些XSS防御方法,Django 在模板输出时会默认对文本进行HTML实体编码,默认不会触发XSS问题,如果发生XSS请检查html模板变量输出处是否主动使用了safe filter。
未使用web框架可使用 cgi.escape() 对参数进行过滤
防止XSS漏洞攻击常用解决方案相关推荐
- php的服务器变量$SERVER以及防止$_SERVER['PHP_SELF']造成的XSS漏洞攻击及其解决方案
一.背景 突然想起来之前面试的一些面试题,让我写出几个服务器变量$SERVER代表的意思..实话实说,这些东西已经忘记很久了,都是用的时候直接上网查,今天再复习复习吧. 二.$SERVER $_SER ...
- 网站安全之XSS漏洞攻击以及防范措施
在网站开发中,安全问题是重中之重的问题,特别像一个sql注入,XSS漏洞攻击,等的防范,如果不做好,网站将存在很大的隐患 XSS漏洞是网站漏洞中最容易出现的一种,至少现在的各大网站中基本都存在,传闻只 ...
- java前端提示反射型xss_解决反射型XSS漏洞攻击
1 /* 2 * Copyright (C), 2001-2019, xiaoi机器人3 * Author: han.sun4 * Date: 2019/2/28 11:395 * History:6 ...
- XSS(跨站脚本攻击) - 常用代码大全
XSS(跨站脚本攻击) - 常用代码大全: 2020-03-05更新:增加42条xss代码 1'"()&%<acx><ScRiPt >prompt(91514 ...
- ASP.Net防范XSS漏洞攻击的利器HtmlSanitizer
项目名称:HtmlSanitizer NuGet安装指令:Install-Package HtmlSanitizer 官方网站:https://github.com/mganss/HtmlSaniti ...
- 新浪微博的XSS漏洞攻击过程详解
今天晚上(2011年6月28日),新浪微博出现了一次比较大的XSS攻击事件.大量用户自动发送诸如:"郭美美事件的一些未注意到的细节","建 党大业中穿帮的地方" ...
- 跨站脚本攻击之反射型XSS漏洞【转载】
转载自FovWeb.com 如果一个WEB应用程序使用动态页面传递参数向用户显示错误信息,就有可能会造成一种常见的XSS漏洞.一般情况下,这种页面使用一个包含消息文本的参数,并在页面加载时将文本返回给 ...
- XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析
2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...
- java反射行跨站脚本攻击_跨站脚本攻击之反射型XSS漏洞【转载】
如果一个WEB应用程序使用动态页面传递参数向用户显示错误信息,就有可能会造成一种常见的XSS漏洞.一般情况下,这种页面使用一个包含消息文本的参数,并在页面加载时将文本返回给用户.对于开发者来说,使用这 ...
最新文章
- python图片-Python图片处理
- 微电子所在阻变存储器研究领域取得新进展
- git clone --recursive慢_Git使用之submodule
- 【Flink】Flink RocksDB内存占用一直增大 state.backend.rocksdb.memory.managed
- 光源时间_【精品透视】UVLED紫外固化光源崭露头角!
- 华为鸿蒙os公测需要多久,华为系统公测到正式版需要多久
- 删除排序数组中的重复数字
- 【读书笔记】A Swift Tour
- Linux下汇编语言学习笔记76 ---
- BZOJ 1507 [NOI2003]Editor
- 阿里云 php shopex,开shopex
- 【氵贴慎点】matlab啊啊啊
- 【软件测试手册2021版】测试题总结
- 翻译程序和解释程序的区别
- 用计算机弹出微微,电脑显示器轻微闪烁怎么办
- 论文阅读笔记-FGN: Fusion Glyph Network for Chinese Named Entity Recognition
- 小米运动同步到Google Fit健身, 解决睡眠和体重不同步的情况
- python运行js---execjs 使用
- Android 混淆机制详解
- 智慧海洋建设——Task1 地理数据分析常用工具学习心得