最近在利用gitbucket用作项目开发中的代码托管工具。简单介绍一下gitbucket:gitbucket是一个仿github界面的代码托管工具。使用scala语言开发,利用jgit开源工具管理和操作git命令,内置了一个轻量级的内存数据库h2数据库(轻量到就一个jar包)。这个项目更新的比较快,目前最近的版本已经到1.11。
在使用1.8版本时,遇到一个XSS漏洞:创建一个项目(不需要太正式),创建README.md文件。README.md文件中添加xss攻击语句:"><script>alert(1)</script><"并上传项目。当用户访问上传的项目时,浏览器将会解析javascript命令:alert(1)。
为了避免被XSS攻击,我们需要在gitbucket把README.md文件的内容传递给用户的浏览器前,将README.md的内容转成html的内容,比如将“"”转成“"”等。
读取README.md的程序文件文件是app/RepositoryViewerController.fileList。fileList方法中有获取README.md文件内容的方法:
StringUtil.convertFromByteArray(JGitUtil.getContent(Git.open(getRepositoryDir(repository.owner, repository.name)), file.id, true).get)
添加上转义方法:
StringUtil.convertFromByteArray(JGitUtil.getContent(Git.open(getRepositoryDir(repository.owner, repository.name)), file.id, true).get) .replace("&", "&").replace(">", ">").replace("<", "<").replace("\"", """)
再次访问之前的项目,README.md显示"><script>alert(1)</script><",而不会执行这段javascript。
珍爱安全,远离XSS
相关推荐
开源的readme.md编写工具。windows平台
README.md编写教程(基本语法) Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。
README.md:README.md模板和示例
从Readme.md文件创建美观简单的HTML页面
这是一个用于微信小程序开发的md文件,希望可以帮助大家。
README.md
readme,matlab处理文件
linux内核相关资料
README.md
spark入门联系wordcount等相关操作文档~ Spark is a fast and general cluster computing system for Big Data. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine that ...
markdown的基本语法使用 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题
代码包括:配置中心、服务提供端接口包Feign集成、服务提供端、...已基本满足开发使用,由于时间关系还缺少Spring Cloud Bus、Spring Cloud Stream。个人觉得Spring Cloud Task还待完善,缺少UI管理,所以也未集成。
生成README.md文件的cli 用法 请确保您已安装( npx默认情况下,由于NPM运5.2.0 ) 在项目的根目录运行以下命令并回答问题: npx @mxttwoods/readme-cli 对所有问题使用默认值( -y ): npx @mxttwoods/readme...
从您的Readme.md文件创建漂亮而简单HTML页面 :hammer_and_wrench: 没有配置 :laptop_computer: 代码突出显示 :hundred_points: 表情符号支持 :sparkles: 创建静态文件(仅JS是棱镜) :rainbow_flag_selector:...
一些关于目标检测的脚本的改进思路代码,详细请看readme.md.zip
README.md任务所用jd-gui插件
modhelp - 在终端中着色显示README.md的模块
真棒README.md嗨,很高兴见到您。 欢迎来到我的网站! 我是来自法国洛里昂的Fullstack开发人员Thomas,目前住在瑞典斯德哥尔摩。 我用开源项目编码的东西:wrapped_gift:项目:star:星叉:bellhop_bell:问题:open_...