【问题标题】:What is difference b/w org.owasp.esapi.Encoder.encodeForHTML and org.owasp.esapi.Encoder.encodeForJavaScript methodsb/w org.owasp.esapi.Encoder.encodeForHTML 和 org.owasp.esapi.Encoder.encodeForJavaScript 方法有什么区别
【发布时间】:2020-06-02 04:17:00
【问题描述】:

我知道,我们可以对 HTMl 使用 encodeForHTML,对 javaScript 使用 encodeForJavascript。 我的代码中有一个跨站点脚本:“Reflected fortify scan problem”

String errorDesc = HttpServletRequest.getParameter("error_description");

我必须使用编码器来验证这一点,但我很困惑我应该在它们之间使用哪一个。因为我们不知道 HttpServletRequest.getParameter 的返回类型。

1.  org.owasp.esapi.Encoder.encodeForHTML
2.  org.owasp.esapi.Encoder.encodeForJavaScript

【问题讨论】:

    标签: java security owasp encoder esapi


    【解决方案1】:

    亲爱的提问者,我们这里有一个相当普遍的误解,即关于输出编码之间的差异 - 这是您在查看编码器调用时正在使用的内容,输入验证是一个完全独立的操作,具有与Encoder 类无关。

    您在此处处理的Encoder 方法仅在您向用户呈现数据时使用,并且仅用于正确的上下文。例如,如果应用程序是“单页应用程序”(SPA),那么您很可能只想确保输出是为 JavaScript 编码的,因为面向客户端的框架几乎肯定是 JavaScript。

    如果您使用的是较旧样式的应用程序,那么只要您将数据放在<some_tag> data </some_tag> 之间,您就会为 HTML 编码。

    XSS 要求您了解应用程序中每个变量的一件事:它的数据流,从生成值的时间开始(服务器、用户、数据库等)并了解所有转换它可能会在遍历到用户并返回系统时经历。如果该值在浏览器中开始,它将进入后端的某种控制器,并且在您处理该值之前,您将验证它——ESAPI 有一个验证器类——然后如果它通过验证,你将确保数据库仅将其视为数据(PreparedStatement,或通过使用 ORM 框架的实用程序。)最佳实践是

    1. 规范化数据
    2. 根据规范化值进行验证
    3. 如果有效,则丢弃规范化的值并存储原始数据

    如果使用得当,Validator 类默认会帮助您做到这一点。

    您在此问题中询问的方法适用于将用户输入发送回浏览器的情况,无论是从数据库还是从会话中尚未持久化的先前请求。

    【讨论】:

      【解决方案2】:

      主要区别在于输出编码是如何完成的。 Encoder.encodeForHTML() 通过 org.owasp.esapi.codecs.HTMLEntityCodec 类进行 HTML 实体编码,而 Encoder.encodeForJavaScript() 通过 org.owasp.esapi.codecs.JavaScriptCodec 使用 JavaScript 的反斜杠编码。

      您选择哪一个取决于您的“error_description”参数将如何在您的应用程序中呈现的上下文。如果在 HTML 标记之间呈现,请使用 encodeForHTML(),如果您在纯 JavaScript 上下文中呈现,请使用 encodeForJavaScript()。请参阅https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html 以获得更详尽的说明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多