相关疑难解决方法(0)

准备好的语句如何防止SQL注入攻击?

准备语句如何帮助我们防止SQL注入攻击?

维基百科说:

准备好的语句对SQL注入具有弹性,因为稍后使用不同协议传输的参数值无需正确转义.如果原始语句模板不是从外部输入派生的,则不能进行SQL注入.

我看不清楚原因.简单的英语和一些例子中有什么简单的解释?

sql security sql-injection prepared-statement

151
推荐指数
5
解决办法
10万
查看次数

Java Spring JPA 本机查询 SQL 注入证明吗?

我写这个问题是因为我没有找到任何关于如何在 Spring Data JPA 中防止 SQL 注入的有用文章。所有教程都展示了如何使用这些查询,但他们没有提到有关这些可能的攻击的任何内容。

我有以下查询:

@Repository
public interface UserRepository extends CrudRepository<User, Integer> {

    @Query(nativeQuery = true, value = "SELECT * FROM users WHERE email LIKE %:emailAddress%")
    public ResponseList<User> getUsers(@Param("emailAddress") String emailAddress);
}
Run Code Online (Sandbox Code Playgroud)

传递请求的其余控制器:

@RequestMapping(value = "/get-users", method = RequestMethod.POST)
public Response<StringResponse> getUsers(WebRequest request) {
    return userService.getUsers(request.getParameter("email"));
}
Run Code Online (Sandbox Code Playgroud)

JPQL 或本机查询参数在执行之前是否进行了转义?

这是在我的 MySQL 控制台中执行的 SQL 注入查询,它删除了用户表:

SELECT * FROM users WHERE email LIKE '%'; DROP TABLE users; -- %';
Run Code Online (Sandbox Code Playgroud)

我试图通过向服务器发送 POST 请求来执行 SQL 攻击:

http://localhost:8080/get-users
POST: key/value: "email" : …
Run Code Online (Sandbox Code Playgroud)

sql-injection spring-data-jpa

6
推荐指数
1
解决办法
5873
查看次数

Spring Data JPA是否可以防止SQL注入

我正在尝试查找有关Spring Security JPA的信息,以及是否.save()保护诸如sql注入之类的方法。

例如,我有Customer.要保留到数据库的对象。我正在使用CustomerRepository Spring实现在该实体上进行操作。客户的构造函数正在使用用户的参数。当一切都准备就绪时,我正在调用.save()。这样可以防止sql注入吗?还是应该先进行检查?

database sql-injection spring-data spring-data-jpa

5
推荐指数
1
解决办法
3841
查看次数