如何实现用户以安全的方式发布一些 html 格式的数据的可能性?

2023-12-22

我有一个textarea我想支持发布数据的一些最简单的格式(至少是空格和换行符)。

我怎样才能实现这个目标?如果我不逃避响应并保留一些 html 标签,那么这将是一个很大的安全漏洞。但我没有看到任何其他允许在浏览器中进行文本格式化的解决方案。

所以,我可能应该过滤用户的输入。但我该怎么做呢?有现成的解决方案吗?我正在使用 JSF,那么是否有任何智能组件可以过滤除 html 标签之外的所有内容?


使用支持针对白名单的 HTML 过滤的 HTML 解析器,例如Jsoup http://jsoup.org。这是相关性的摘录its site http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer.

清理不受信任的 HTML http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer

Problem

您希望允许不受信任的用户提供 HTML 以在您的网站上输出(例如作为评论提交)。您需要清理此 HTML 以避免跨站脚本 http://en.wikipedia.org/wiki/Cross-site_scripting(XSS) 攻击。

Solution

使用 jsoup HTMLCleaner http://jsoup.org/apidocs/org/jsoup/safety/Cleaner.html具有指定的配置Whitelist http://jsoup.org/apidocs/org/jsoup/safety/Whitelist.html.

String unsafe = 
      "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());
      // now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>

然后要在保留空白的情况下显示它,请应用 CSSwhite-space: pre-wrap;在您显示它的 HTML 元素上。

我的脑海中没有想到任何一体化的 JSF 组件。

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

如何实现用户以安全的方式发布一些 html 格式的数据的可能性? 的相关文章

随机推荐

  • 从 Bash shell 脚本发送邮件

    我正在写一个Bash http en wikipedia org wiki Bash 28Unix shell 29Mac 的 shell 脚本 通过打开自动应用程序发送电子邮件通知 该自动应用程序使用 Mail app 中的默认邮件帐户发
  • 将模块包含到项目后出现“不受支持的类文件版本 52.0”

    在 Android Studio 中创建一个空项目并包含一个纯 java 模块 该模块可以自行编译并完美运行 后 我在该模块中的每个类上都收到以下错误 Error PARSE ERROR Error unsupported class fi
  • 使用 HTML5 拖放,有没有一种方法可以在保持拖放流的同时从视图中隐藏元素

    我正在努力通过创建一个指示器 拖动元素的轮廓 来改进拖放实现 当您在网格中拖动和移动时 该指示器沿着设置的柔性网格移动 在当前的实现中 拖动的元素就位 当我放在放置目标上时 它会更新弹性顺序 我想要做的是完全隐藏元素 以便更好地视觉提示元素
  • Oracle(空间几何)查询的问题

    我正在尝试使用 SDO WITHIN DISTANCE 形成一个查询 返回给定矩形内的实体列表 我所做的查询似乎应该有效 但 Oracle 给了我一些奇怪的错误 这是查询 SELECT FROM TBLENTITYLOCATION TL I
  • 使对象的属性可迭代

    我返回一个包含具有多个属性的对象的列表 如下所示 results q fetch 5 for p in results print s s d inches tall p first name p last name p height 是否
  • Xcode 错误:Outlet 无法连接到重复内容

    经过一些搜索和编辑后 我似乎找不到解决此错误的解决方案 我正在尝试将位置搜索结果与表格链接起来 以列表形式显示搜索结果 我的地图上有详细信息按钮 该按钮与名为 FirstViewController 的 UIViewController 链
  • Google Native Client,将二进制数据从 NACL 发送到前端

    如何发送二进制数据 例如mp3 mp4数据返回前端 我知道有两种方法可以做到这一点 利用NACL提供的沙箱文件系统并在前端获取url 将数据通过PostMessage using VarArrayBuffer 如果有人能给我一个如何传递二进
  • 数据流程图和流程图有什么区别?

    我想知道为什么我们使用数据流程图而不是流程图 流程图详细说明了流程跟随 DFD 详细说明了流程data通过一个系统 在流程图中 箭头表示元素之间的控制 而不是数据 转移 元素是指令或决策 或I O等 在 DFD 中 箭头实际上是元素之间的数
  • QImage 在 PNG 中设置 alpha 透明度

    我正在尝试在另一个图像上绘制图像 并且该部分有效 但在绘制覆盖图像之前我想降低它的不透明度 这就是我遇到麻烦的地方 我的叠加图像是PNG的 它们本身有透明区域 否则它们的内容是黑色的 在 Qt 中 我循环遍历每个像素 但无法确定像素是否透明
  • 下拉值未使用 ajax 传递到控制器

    我需要使用 ajax 将下拉列表中的值传递到控制器 但显然 这不起作用 该值显示为空 我需要传递的值 kodeCabang到控制器 我该如何做这份工作 HTML代码如下 div class dropdown div
  • 具有多种形式的 Django-TinyMCE

    我正在尝试创建一个包含多个 TinyMCE 编辑器实例的 HTML 页面 编辑的数量根据要求而变化 所以我无法枚举它们并单独初始化它们 这是我的代码 视图 py from tinymce widgets import TinyMCE cla
  • 将 ASP.NET vNext 应用程序部署到 Azure 云服务

    是否可以将 ASP NET vNext Web 应用程序部署到 Azure 云服务 如果是 那么它是构建在 aspnet50 还是 aspnetcore50 框架上有什么关系吗 Azure 云服务 Visual Studio 模板即使在 2
  • git 无法拉取远程更改

    由于以下错误 我无法从远程存储库中提取更改 我正在尝试从该存储库的主分支中提取数据 c supportal gt git pull error cannot lock ref refs remotes origin KANBAN unabl
  • Jaxb 解组不起作用

    我有这个 xml 文件
  • 如何为 iOS 分发创建 P12 证书

    我们有一款 iOS 应用程序 其推送通知证书已过期 我们正在尝试创建一个新的证书 我已在配置门户 ios developer cer ios distribution cer 中创建了新证书并下载了它们 我按照指示进行在 Stack Ove
  • 如何禁用 EditText 软件键盘上的“下一步”按钮(替换为“完成”按钮)

    我的 Android 应用程序中有一堆 EditText 每个 EditText 的 InputMethod 设置为 numberSigned 我的目标设备没有硬件键盘 而是使用软件键盘进行数字输入 Android 将输入框右侧的标准 完成
  • 如何在 swift 中 http 发布特殊字符

    我使用以下命令将电子邮件和密码发布到我的服务器 php 脚本 我遇到的问题是密码包含一个特殊字符 特别是 符号 似乎正在被剥离 我认为是因为它认为它的分隔变量被传递 我怎样才能传递这个字符而不剥离它 let myURL NSURL stri
  • scrapyd部署显示0个蜘蛛

    我正在使用 scrapy 进行项目 我运行了以下命令来部署项目 scrapy deploy l 然后我得到以下o p 刮刮网站http localhost 6800 cat scrapy cfg settings default scrap
  • List.Contains 返回 false,尽管看起来它应该返回 true

    Sub pageload Handles Me Load Dim bom As New List Of Car Dim car1 As New Car With Name Pea Year 2 Dim car2 As New Car Wit
  • 如何实现用户以安全的方式发布一些 html 格式的数据的可能性?

    我有一个textarea我想支持发布数据的一些最简单的格式 至少是空格和换行符 我怎样才能实现这个目标 如果我不逃避响应并保留一些 html 标签 那么这将是一个很大的安全漏洞 但我没有看到任何其他允许在浏览器中进行文本格式化的解决方案 所