繁体   English   中英

Spring 中的方法安全性

[英]Method security in Spring Security

我有一个关于使用 Spring Security 来防止 SQL 注入的问题。 首先,我知道使用准备好的语句可以防止任何 SQL 注入。 但在我的项目中,我想展示使用 Spring Security 可以帮助保护或减轻这种攻击。 到目前为止,我做了什么,我使用 JDBC 和 Spring 建立了连接,并应用了 Spring 安全性,一切都很好。 我的问题是在我的项目中,我使用了两种方法来防止 SQL 注入。 第一个是清理用户输入,第二个是使用 Spring 安全性。 我可以通过 Sanitizaing 传递恶意输入,我想证明 spring 安全性的作用。 例如,我通过这个输入:

TV' UNION SELECT credit_no From credit;--

在这种情况下,我怎么能告诉 Spring 安全它不给任何用户信用号码。 顺便说一句,我使用了方法安全级别。 只是我想给我一个简单的方法来分析用户输入,看看它是否可以访问他要求的数据,例如信用。

我希望清楚

好吧,您的问题不是 100% 清楚,并且可能因您的架构而异,但pre post annotations可以很好地获取用户输入。
您可以创建自己的权限评估器并在您的方法中检查预授权的权限。

@PostFilter("hasPermission(filterObject, 'customoperation')")
public CreditCard getCreditCard(String userInput) {
    //
}

并且您的hasPermission方法(您已在上面的链接中阅读过)类似于:

public boolean hasPermission(Authentication authentication,
        Object target, Object permission) {
    if ("customoperation".equals(permission)) {
        //your logic here, returning true or false, filtering the object
    }
    return false;
}

您还可以扩展表达式处理程序以使用自定义函数。 检查这个答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM