【问题标题】:Question about Html Encoding关于Html编码的问题
【发布时间】:2010-07-16 21:16:27
【问题描述】:

我正在使用 jquery 数据表和 MS XSS 库。

我做了这个

AntiXss.HtmlEncode(MyDate.ToString("MM/dd/yyyy h:mm tt"))));

这渲染了这个

07/22/2010 4:04 PM

所以它全部编码。现在无论出于何种原因,这都会弄乱数据表。它无法弄清楚如何排序了。

那么为什么要对斜线和点进行编码呢?他们有什么不好?当它显示在浏览器中时看起来像 07/22/2010 4:04 PM

所以我猜数据表只是接受编码版本,不知道如何处理它。

我该怎么办。我想对数据进行编码,但如果它弄乱了我的排序,那也不好。我应该改用安全的 html 片段吗?

【问题讨论】:

    标签: c# jquery security jquery-plugins datatable


    【解决方案1】:

    说实话,我不知道涉及斜线和点的 XSS 攻击。然而 许多 字符有一个 htmlentitiy 等价物,它正在进行这种转换,但我不认为这是出于安全考虑。

    就安全性而言,讨厌的字符是这 4 个:'"<>。另一件事是,AntiXss.HtmlEncode() 方法应该用于用户输入以防止 XSS。在不受攻击者影响的日期运行此功能没有多大意义...(当然,除非您防御时间旅行者。)

    【讨论】:

    • 那么日期是由用户设置的。我想如果试图进入数据库它会死掉(因为它不是日期时间)。附带说明一下,最好将输入编码到数据库,或者让所有内容都输入并将输出编码给用户。还是两者都做?
    • 数字存储为整数怎么样?他们可以用 int 的方式纠正它,他们可以用十六进制写吗?
    • 现在我想起来你的权利在约会时这样做可能没有意义。我想我的想法很好,用户可以将其更改为任何内容(因为它已更改为字符串)但我想当日期存储在数据库中的日期时间中时创建字符串有点困难,这就是我得到它的地方.所以我猜这与int、bits等是一样的吗?
    • @chobo2 它通常最好以实际形式存储数据,因为这样更容易进行比较。在这种情况下,您可能希望选择特定日期之后的所有行,如果它被编码,您就不能这样做。 XSS 漏洞只有在攻击者可以强制另一个浏览器执行 JavaScript 时才存在,因此将 <script>alert(/xss/)</script> 存储在数据库中不是漏洞,但打印出来是。
    • 是的,我想我的想法(或缺乏想法)是出于某种原因他们可以将其存储在我的日期所在的数据库中(即使它是一个日期时间)
    【解决方案2】:

    只需对日期字符串的格式进行完整性检查,而不是对日期进行编码。只要它是一个格式良好的日期,就没有脚本注入或其他恶作剧的危险。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      相关资源
      最近更新 更多