gpt4 book ai didi

java - Java ESAPI 中的编码

转载 作者:行者123 更新时间:2023-12-01 23:01:21 27 4
gpt4 key购买 nike

为了防止 SQL 注入(inject),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注入(inject)有什么帮助?请解释一下。

最佳答案

使用 OWASP 的指南,可以找到多个测试用例 here .

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

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

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

return "\'\'";

转义单引号。

Oracle 转义为 here

假设您的查询是“select * from users where id =\'”+ request.getParameter(“id”)

通过不转义单引号,输入如下:

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

我强烈建议您下载WebGoat计划,并遵循其教训。它将教您如何使用 SQL 注入(inject)以及许多其他基本的 Web 攻击。 ESAPI Swing 将帮助您学习如何缓解这些问题。

关于java - Java ESAPI 中的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23336957/

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