gpt4 book ai didi

java - 易受 SQL 注入(inject)攻击?

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:24 31 4
gpt4 key购买 nike

我目前正在创建一个使用 MySQL 的 Java 应用程序。

我读到在某些情况下您应该使用准备好的语句来防止 SQL 注入(inject)。

到目前为止,我不使用准备好的语句,实际上我有点担心我的代码可能容易受到 SQL 注入(inject)的攻击。<​​/p>


执行MySQL查询的情况:

  • 从应用程序内部直接查询(所有使用的变量都在应用程序中定义)
  • API 调用(另一个应用程序进行 MySQL 查询 --> 所有使用的变量都在进行调用的应用程序内部定义)

MySQL代码:

    public static void Update(final String qry) {

try {
Statement stnt = connection.createStatement();
stnt.executeUpdate(qry);

} catch (SQLException e) {
e.printStackTrace();
}

}

public static ResultSet Query(String qry) {
final ResultSet rs;

try {
Statement stnt = connection.createStatement();
rs = stnt.executeQuery(qry);
} catch (Exception e) {
e.printStackTrace();
}

return rs;
}

最佳答案

根据其他因素,您的应用程序可能仍然容易受到来自有权访问您应用程序环境的人的 SQL 注入(inject)攻击。

例如,如果您的代码中定义的变量从配置文件中获取它们的值,然后成为 SQL 查询的一部分,则可以访问您的配置文件的攻击者可以通过更改您的配置内容来执行 SQL 注入(inject)攻击文件。其他应用程序也是如此:如果有一种方法可以更改进入 SQL 查询构造的变量的内容,则很可能执行成功的 SQL 注入(inject)攻击。

使用准备好的语句可以全面防御注入(inject)。不过,增加的复杂性是值得的,因为您可以通过相对简单的修复来填补一个巨大的安全漏洞。

关于java - 易受 SQL 注入(inject)攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45525503/

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