当前位置: 首页 > 知识库问答 >
问题:

在 Java ESAPI 中编码

楚苏燕
2023-03-14

为了防止SQL注入,OWASP对接收到的字符进行编码。下面是为org.owasp.esapi.codecs.OracleCodec.java类实现的代码

 //Default implementation that should be overridden in specific codecs. Encodes ' to '' Encodes ' to '' (according to doc)


 public String encodeCharacter( char[] immune, Character c ) {
    if ( c.charValue() == '\'' )
        return "\'\'";
    return ""+c;
}

以上对预防SQL注入有什么帮助?请解释一下。

共有2个答案

凌伟泽
2023-03-14

这里很好的解释了oracle和其他DBMS:https://www . owasp . org/index . PHP/SQL _ Injection _ Prevention _ Cheat _ Sheet

但是防止SQL注入的规则n.1不是使用查询连接,而是使用准备好的语句!使用准备好的语句,不需要编码任何参数(由sql api设置),也有数据库性能优化。

邢同
2023-03-14

使用OWASP的指南,可以在这里找到多个测试用例。

您在这里看到的代码片段可以防止有人试图逃脱查询来运行他们自己的任意命令。

if ( c.charValue() == '\'' )

如果输入值等于ASCII char值0x27(单引号)

return "\'\'";

转义单引号。

神谕逃亡就在这里。

假设您的查询是“从用户中选择 *,其中 id = \'” request.getParameter(“id”)

通过不转义单引号,这样的输入:

request.setParameter(“id”, “\' OR 1=1;”);通过将最终的非 Java 格式查询更改为从 id = '' OR 1=1 的用户中选择 *,将导致返回该表中的所有信息;

我强烈建议您下载WebGoat程序,并遵循其课程。它将教您如何使用SQL注入以及许多其他基本的Web攻击。ESAPI 秋千集将帮助您学习如何缓解它们。

 类似资料:
  • 问题内容: 我需要使用Java中的Base64编码对一些数据进行编码。我怎么做?提供Base64编码器的类的名称是什么? 我试图使用该类,但没有成功。我有以下几行Java 7代码: 我正在使用Eclipse。Eclipse将此行标记为错误。我导入了所需的库: 但是同样,它们两个都显示为错误。我在这里找到了类似的帖子。 我使用Apache Commons作为建议的解决方案,包括: 并导入从http:

  • 了解如何在“代码”视图中工作并充分利用 Dreamweaver 的编码功能。 可通过多种方式在 Dreamweaver 中处理代码。 您可以使用“新建文档”对话框打开新的代码文件,然后开始键入您的代码。在 Dreamweaver 中创建新的代码文件 键入时,会显示代码提示以帮助您选择代码和避免打字错误。如果需要,可使用 Dreamweaver 的有用的快捷文档获取 CSS 的相关帮助。 还可以使用

  • 问题内容: 我知道过去有一些关于在Eclipse中编译但不能在命令行中编译的问题,但是我还无法找到解决问题的答案。 特别是,我认为我可以设置eclipse以使用我的系统编译器,但这仍然不能解决问题。 我目前正在检查以下内容:“首选项-> Java->已安装的JRE”。 它仅包含一个JRE,这是我的系统之一。 这是问题的细节 我有一个Java通用类,将Enum类型作为参数,如下所示: 我在类中的某个

  • 问题内容: 如何在Python中的ut8mb4中编码内容? 我有两组数据:正在从Parse迁移到新的MySQL数据库的数据,以及向前传输的数据(仅与新数据库通信)。我的数据库是utf8mb4,用于存储表情符号和带重音的字母。 当我使用python脚本时,第一组数据仅能正确显示(涉及表情符号和重音符号时): 并且在PHP中从MySQL数据库读取时: 当我不包含第二部分数据时,仅能正确显示第二组数据(

  • 问题内容: 我在允许用户输入内容的CMS中工作。问题在于,当他们添加符号时,它可能无法在所有浏览器中正常显示。我想设置一个必须搜索的符号列表,然后将其转换为相应的html实体。例如 ®=> &=> ©=> ™=> 转换后,需要将其包装在标签中,从而导致: => 由于必须使用特定的字体大小和填充样式: JavaScript会是这样吗? “ [?]”的意思是说我不确定。 额外细节: 我想使用纯Java

  • 我想将我的VBA代码实现到SAS代码中,这样一次运行就可以完成整个过程。我的SAS代码读取一个大SAS表,进行一些转换,最后导出到Excel文件(代码如下)。我还在Excel文件中编写了一些VBA代码(例如,对某些变量进行自动筛选,您可以看到下面的代码)。 这张桌子看起来像这样: 然而,我想将我的VBA代码实现到SAS代码中,这样我就可以一次运行完成整个过程。我知道如何在SAS中打开和运行Exce