gpt4 book ai didi

html-encode - 使用 HTML 保存属性 - 在条目或显示时编码?

转载 作者:行者123 更新时间:2023-12-04 20:22:55 25 4
gpt4 key购买 nike

我有一个系统,它允许用户将 HTML 保留字符输入到文本区域,然后将其发布到我的应用程序。然后将该信息保存到数据库中以供以后检索和显示。警报正在(应该)在你的脑海中响起。我需要确保避免 XSS 攻击,因为我会在应用程序的其他位置显示这些数据。这是我看到的选项:
保存到数据库之前编码
我可以在进入数据库的过程中对数据进行 HTML 编码,因此不会在数据库中输入任何 HTML 字符。
优点:

  • 当数据显示在网页上时,开发人员不必记住对数据进行 HTML 编码。

  • 缺点:
  • 这些数据现在对基于桌面的应用程序(或 HTML 以外的任何东西)没有意义。像 < > & 这样的东西出现等

  • 在保存到数据库之前不要进行 HTML 编码
    每当我需要在网页上显示数据时,我都可以对数据进行 HTML 编码。
    优点:
  • 感觉不错,因为它保持了用户输入的数据的完整性。
  • 允许非基于 HTML 的应用程序仅显示此数据,而不必担心 HTML 编码。

  • 缺点:
  • 我们可能会在很多地方显示这些数据,并且我们必须确保每个开发人员都知道,当您显示此字段时,您需要对其进行 HTML 编码。
  • 人们忘记了事情。当我们忘记对数据进行 HTML 编码时,至少会有一次实例。

  • 在保存到数据库之前清理数据(不要进行 HTML 编码)
    我可以使用经过良好测试的第三方库来删除潜在危险的 HTML,并获得一个安全的 HTML 片段来保存数据库,而不是 HTML 编码。
    优点:
  • 保留大部分原始输入,以便以非 HTML 格式显示。
  • 如果开发人员忘记对这些信息进行 HTML 编码以显示在网页上,则灾难性较小。

  • 缺点:
  • 当用户最初输入数据时,仍然会混淆数据。如果他们真的想输入 <script><object>标记,它不会成功,因此我们会收到支持电话和电子邮件。

  • 我的问题是:最好的选择是什么,或者如果有另一种解决方法,它是什么?

    最佳答案

    正确的做法是不要破坏/更改用户输入。

    所以,不要保存前编码。

    是的,这让开发人员有责任记住并知道他们需要对来自数据库的任何内容进行编码,但无论如何这都是一种好习惯。

    关于html-encode - 使用 HTML 保存属性 - 在条目或显示时编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4326228/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com