确保用户制作的 HTML 模板安全

2023-11-30

我希望允许用户创建微小的模板,然后我使用预定义的上下文在 Django 中呈现这些模板。我假设 Django 渲染是安全的(我问了一个关于这个的问题before),但仍然存在跨站点脚本的风险,我想防止这种情况发生。这些模板的主要要求之一是用户应该对页面的布局有一定的控制,而不仅仅是其语义。我看到了几个解决方案:

  • 允许用户使用 HTML,但在最后一步手动过滤掉危险标签(例如<script> and <a onclick='..'>。我对这个选项不太热衷,因为我担心我可能会忽略一些标签。即使这样,用户仍然可以使用绝对定位<divs>弄乱页面其余部分的一两件事。
  • Use a 标记语言生成安全的 HTML。据我所知,在大多数标记语言中,我可以剥离任何 html,然后处理结果。问题是大多数标记语言在布局方面都不是很强大。据我所知,Markdown 中没有办法将元素居中,甚至在 ReST 中也是如此。这里的优点是一些标记语言有详细的文档记录,用户可能已经知道如何使用它们。
  • 提出一些专有标记。我在这里看到的缺点几乎都是这个词所暗示的所有权.

所以,总结一下:是否有一些安全且简单的方法来“净化”HTML——防止 xss——or是否有一种相当普遍的标记语言可以对布局和样式进行一定的控制。

资源:

  • 我之前关于 Django 模板的问题
  • Markdown 中的类名。

看到 Pekka 的回答,我尝试快速用 Google 搜索 Python 中的 HTML Purifier 等效项。这是我想出的:Python HTML 清理器。乍一看,我觉得还不错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确保用户制作的 HTML 模板安全 的相关文章

随机推荐

  • C大调帕斯卡三角形

    我是一名计算机工程专业的学生 下学期我将开始 C 课程 因此 为了让自己做好一点准备 我开始自学 C 语言 并偶然发现了一个有趣的任务 乍一看 它是为我设计的 不是一个非常高级的水平 任务是编写一个程序来计算给定位置的值帕斯卡三角形 计算它
  • C#中如何设置系统环境变量?

    我试图在我的应用程序中设置系统环境变量 但得到一个SecurityException 我测试了在谷歌中找到的所有内容 但没有成功 这是我的代码 注意 我是我的电脑的管理员并以管理员身份运行 VS2012 尝试1 new Environmen
  • 子类/继承标准容器?

    我经常在 Stack Overflow 上读到这样的说法 就我个人而言 我认为这没有任何问题 除非我以多态方式使用它 即我必须使用的地方virtual析构函数 如果我想扩展 添加标准容器的功能 那么有什么比继承更好的方法呢 将这些容器包装在
  • 属性复制在Cocoa框架中意味着什么?(如UITabBar的items属性)

    在 Tab Bar h 中 正确签名的副本 property nonatomic copy NSArray items 获取 设置可见 这是一个数组 复制 是什么意思 复制 NSArray 容器 obj 复制 NSArray 包含的每个 o
  • 从 DataGridView 获取 DataTable 并尊重过滤器和排序

    我有一个System Windows Forms DataGridView充满了数据 我正在使用这样的代码 System Data DataTable dataTable1 System Windows Forms BindingSourc
  • 在 Outlook 中粘贴表格之前写入 - Excel VBA

    我使用以下代码将表格粘贴到 Outlook 上的新电子邮件中 Copy range of interest Dim r As Range Set r Range B2 D5 r Copy Open a new mail item Dim o
  • 选项卡中的图标未显示

    我从 Android 开始 当我尝试使用图标和文本制作 TabHost 时 只有文本可见 如果我将文本保留为空白 则可以看到图标 我想在屏幕上看到两者 有人可以给我建议吗 public void onCreate Bundle savedI
  • 替换除最后一个字符之外的所有字符

    假设我有一串a b c d 如何编写一个方法将该字符串转换为abc d 或者有没有可用的实现方法 到目前为止我已经尝试过的 int dotPlacing propertyName lastIndexOf 12 String modStrin
  • Databricks 上的 Shap 值绘图错误,但在本地工作

    我想做一个简单的形状分析并绘制 shap force plot 我注意到它在 ipynb 文件中本地工作没有任何问题 但在 Databricks 上失败并显示以下错误消息 Visualization omitted Javascript l
  • 如何在 Google appengine 中加密 ZipOutputStream?

    我正在使用 Java 在 GAE 中创建 zip 文件 并使用 ZipOutputStream 将它们上传到 Google Cloud Storage 但是我需要加密文件 但我不知道如何加密 有谁知道如何在 Google Appengine
  • Firefox 处理 xxx.submit(),Safari 不处理...可以做什么?

    当用户从菜单中选择 释放鼠标 选项之一时 我试图使下拉菜单发布表单 此代码在 FF 中运行良好 但 Safari 由于某种原因不提交表单 我使用 jquery 重新编写了代码 以查看 jquery 的 submit 实现是否可以更好地处理浏
  • C# Alpha Blend 透明 PictureBox

    我的表单上显示了一个网络摄像头提要 并且想在其上绘图 我本来打算使用图片框来完成此操作 但我发现 PictureBox 不支持真正的透明度 而只支持其所在表单的颜色 它也不支持字母混合 这就是我希望它显示的方式 类似于表单的显示方式 有谁知
  • CLLocationManager requestWhenInUseAuthorization() 不起作用

    我尝试在我的 iOS 应用程序中使用位置服务 但出于某种原因requestWhenInUseAuthorization不管用 当用户第一次使用该应用程序时 会像平常一样出现提示请求权限 但当您第二次打开该应用程序时 由于某种原因didCha
  • 如何在“绑定时”获取 ListBox 中项目的 ListBoxItem

    我有一个带有 Foo 对象的 ListBox 并且根据一些事件我禁用 启用 ListBox 中的 ListBoxItems 使用 ListBox Items 属性 我找到 Foo 对象 根据我的理解 我需要使用以下函数来获取 Foo 的 L
  • excel vba插入带格式的行

    我有一个宏 它根据 Excel 2007 中的用户输入插入多行 一切正常 但我仍然有一个小问题 我想复制上面行的完整格式 它仅适用于行中的某些单元格 这是插入代码 Rows B B Insert Shift xlDown CopyOrigi
  • MySQL 中的“REPLACE”和“INSERT ... ON DUPLICATE KEY UPDATE”之间有什么实际区别?

    我需要的是使用特定键设置记录的所有字段的值 该键实际上是复合键 如果还没有具有该键的记录 则插入该记录 REPLACE似乎是为了完成这项工作 但同时它的手册页表明INSERT ON DUPLICATE KEY UPDATE 我应该更好地选择
  • 使用 pythoncurses 逐页或逐行滚动

    我正在尝试使用 pythoncurses 在窗口中写入一些文本 但是当我到达窗口的尽头时我得到了addstr returned ERR 如何逐页或逐行滚动输出 如何绑定空格键或向下箭头 这是我的代码 try screen curses in
  • ITuner::put_TuneRequest() 调用被忽略

    我有一个带有 Microsoft DVBT Network Provider AVerMedia BDA DVBT Tuner AVerMEdia BDA Digital Capture Sample Grabber 和 NULL Rend
  • 如何覆盖每个环境的 Symfony2 语义配置?

    参数 yml time limit 8 my ui yml my ui time limit time limit 配置 yml imports resource my ui yml 然后我可以通过我的包中的扩展和配置类在我的控制器中访问这
  • 确保用户制作的 HTML 模板安全

    我希望允许用户创建微小的模板 然后我使用预定义的上下文在 Django 中呈现这些模板 我假设 Django 渲染是安全的 我问了一个关于这个的问题before 但仍然存在跨站点脚本的风险 我想防止这种情况发生 这些模板的主要要求之一是用户