以安全性为中心的降价渲染器

safemd的Python项目详细描述


safemdTwitter FollowAdd Hultnér on LinkedInBuild StatusPyPI - StatusCodacy BadgeCodacy BadgePyPIPyPI - Python VersionCode style: blackGitHub license

安全

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年的。

找到了一些

我很感激所有的建议,改进和修正。请随意发送 为任何不敏感和紧急的事情创建公关或github问题。 特别注意尝试破坏安全性的附加测试。

我在keybase上进行加密通信。 向我自己域hultner.se上的安全部门发送电子邮件。注意,我放弃任何 SPF、DMARC或DKIM失败消息,包括SPF软故障。


 .
..:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java能否使用OpenJPA将一个实体持久化到多个持久化单元?   java如何访问当前按下的键   java singleton是否意味着哈希代码总是返回相同的值?   inputstream无法在Java中同时使用STDIN和STDERR读取程序输出   java运行时有多贵。getRuntime()与获取内存度量相结合   java AndroidStudio ListView适配器更新   java小程序请求未扩展实时会话   java是设置布尔值所必需的关键部分?   java比较两个字符串,并突出显示发现的不匹配项   java带抽屉布局,无论哪个屏幕处于活动状态,如何在按下后退键时关闭应用程序?   爪哇:颜色有什么区别。黑色和彩色。黑色   Velocity模板中子类的java访问方法   java如何快速学习Drools或其他规则引擎   从Java应用程序访问时缓存数据库查询结果   java cassandra nodetool JPLISAgent。c错误   java我正在解析一个没有pubDate的RSS提要,有没有其他方法可以确定一个项目是何时发布的?