以安全性为中心的降价渲染器
safemd的Python项目详细描述
安全
a降价渲染器,首先关注安全性
在Github的叉的基础上建立{{A8})
additional security precautions为了保险起见。
在审核从用户输入呈现标记的应用程序时,我注意到 许多流行的降价实现是不安全的,并且易受具有 标准配置。
我坚信默认安全而不是选择安全。因此 我决定建立一个图书馆,专注于在工作中使用最好的工具 配置它们以安全地呈现未初始化的用户输入。
安装和使用
通过pip安装:
使用pypi的任何其他工具也可以正常工作,我始终建议使用virtual
环境。
$ pip install safemd
渲染标准标记:
importsafemdsafemd.render(content)
呈现Github风格的降价:
importsafemdsafemd.render(content,flavour="github")
采取的预防措施
在正式的pypi中用于呈现标记的相同library
仓库应用程序由safemd使用。这是基于github的
经过战斗考验的普通马克。我们用这个来保证安全
CMARK_OPT_SAFE
默认启用,因此团队中没有人会意外地让
不安全的代码通过。作为附加的安全层,safemd也通过
通过带有Bleach,mozilla的html清理的白名单从cmark输出
图书馆。
也使用Travis的自动安全测试,每天运行,即使 没有新的变化。
退出安全功能
有一种方法可以避免这些安全预防措施 有一个真正的需要,这样你和你的团队很明显 地方要格外小心。
importsafemd# Disable additional whitelist sanitizing through bleachsafemd.render(content,UNSAFE_NO_BLEACH=True)# Disable cmark safety functionssafemd.render(content,UNSAFE_CMARK_XSS=True)
我的应用程序易受攻击吗?
对于生产环境中的各种标记渲染器来说, 对xss漏洞开放,有些比其他更广泛。一份普通的清单 为了您的方便,已经组装了漏洞,因此您可以测试当前的 以及未来的代码。
[Just a link](javascript:alert("hi")) [Normal link](data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGkiKTwvc2NyaXB0Pgo=) [Nothing fishy here](data:text/html;base64,PHNjcmlwdCBzcmM9Imh0dHBzOi8vZ2lzdGNkbi5naXRoYWNrLmNvbS9IdWx0bmVyL2JjMDIzOGJkOWIxZDI4M2JhMWM5NDczZjU0M2ZmZjc4L3Jhdy9kM2U5YWFkYTdlMGRlNzFkNmNlYTY1MDVmMTljZGE2NjE1MmE0MDFlL2hpLmpzIiBpbnRlZ3JpdHk9InNoYTM4NC0yaGZ6aFlkelB1SGd0S1E2Vk96UGlNbEN2Nzl3WDM1NzdxTDR3eWpmNWhMYkEvcW1BZHhCbXdxNGl6YXRwRy93IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4=)
标记在野外发现的XSS漏洞
当然,如果没有基于降价的列表,这个文档是不完整的 在野外发现的XSS漏洞。其中大部分是2018年和2017年的。
- Valve, store.steampowered.com markdown XSS
- GitLab, Markdown XSS,internal
- PasteBin, markdown XSS (twice)
- Google Colaboratory, XSS + CSP Bypass
- Zendesk, Markdown based Stored XSS
- Streamlabs, account comromise XSS
- Commento
- Leanote
- Markdown's XSS Vulnerability (and how to mitigate it), showdownjs
- And the list goes on…
找到了一些
我很感激所有的建议,改进和修正。请随意发送 为任何不敏感和紧急的事情创建公关或github问题。 特别注意尝试破坏安全性的附加测试。
我在keybase上进行加密通信。 向我自己域hultner.se上的安全部门发送电子邮件。注意,我放弃任何 SPF、DMARC或DKIM失败消息,包括SPF软故障。
.
..: