Tag: security

Deltaspike和@Stateless Bean

我想用DeltaSpike-API保护我的“无状态”EJb。 @Stateless @Remote(UserServiceRemote.class) public class UserService implements UserServiceRemote 在方法级别,我有一个自定义注释“支持” @Support public void doSomething() {} 因此我写了一个自定义注释“@Support”: @Retention(value = RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD }) @Documented @SecurityBindingType public @interface Support { 我的自定义授权器看起来像: @Secures @Support public boolean doAdminCheck(Identity identity, IdentityManager identityManager, RelationshipManager relationshipManager) throws Exception { return hasRole(relationshipManager, identity.getAccount(), getRole(identityManager, “Support”)); } 在我的“beans.xml”文件中,我包括: org.apache.deltaspike.security.impl.extension.SecurityInterceptor 但是在我登录我的应用程序并在每次远程调用时调用“doSomething”方法后,无论我是否拥有该角色,都会忽略“支持”注释。 我做错了什么? 所有建议的Thanx!

这个简单的字符串转义是否可以阻止任何SQL注入?

我在一家公司工作,负责数据库模块的人严格禁止使用预准备语句。 我担心他的实施不安全。 以下是我们当前用于进行SQL查询的代码(带有JDBC / MySQL 5.5的Java 8应用程序): String value = “Raw user input over HTTP-Form”; String sql = “SELECT * FROM db1.articles WHERE title like ‘” + replaceSingleQuotes(value) + “‘”; executeSQL(sql); public static String replaceSingleQuotes(String value) { value = value.replaceAll(“\\\\”, “\\\\\\\\”); return value.replaceAll(“‘”, “\\\\'”); } 我无法进行任何注射,但他的解决方案对我来说似乎非常可疑。 任何人都可以指出如何逃避这种逃避吗? 如果我无法提出任何问题,我将不会更换他的代码,我们的应用程序(银行业务)中有数千名客户提供非常敏感的信息。 编辑:不幸的是我无法显示executeSQL(),因为有一个庞大的类层次结构混乱,一切都是分散的。 但它归结为这样的事情: String query = … // […]

Access-Control-Allow-Origin是否足以防止XSRF攻击?

我们正在构建一个带有在JBoss中运行的Java Spring / Hibernate后端的应用程序。 前端是AngularJS。 我们还没有做任何事情来在服务器端设置XSRF令牌。 我们也不(无论如何)要求允许其他域访问我们的Web资源。 我想我会试着看看我们的网站是否容易受到XSRF攻击,所以我建立了一个恶意网络应用程序,使用Angular的$ http.post()发布到我们真正的应用程序url之一。 我登录到真正的应用程序,然后我尝试从恶意应用程序发布。 在浏览器中,我收到了401响应并看到了错误: XMLHttpRequest cannot load http://localhost:8080/user/delete. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:6543’ is therefore not allowed access. The response had HTTP status code 401. 服务器端未设置为在响应上设置Access-Control-Allow-Origin,因此出现上述错误。 所以我的问题是,只是从响应头中省略了Access-Control-Allow-Origin,足以防止XSRF攻击? 有没有办法我仍然可以在我的网站上进行XSRF攻击,即使没有设置Access-Control-Allow-Origin? 如果是这样的话? 我想演示这次攻击。 谢谢。

如何使用filter执行输出编码以防止XSS?

我在servlet中使用以下代码: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); response.setContentType(“text/html”); out.println(“”); out.println(“”); out.println(“alert(1)”); out.println(“”); out.println(“”); } 并遵循filter的代码: public class SampleFilter implements Filter { protected FilterConfig config; public void init(FilterConfig config) throws ServletException { this.config = config; } public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws […]

OAuth2 – 在Spring Security中处理密码更改

我在Spring安全模块的帮助下为我的REST服务(密码授权类型)实现了OAuth2。 我’使用postgreSQL作为我的令牌存储。 一切正常,但我需要添加更改用户密码的可能性。 如果用户更改了密码,则应删除/忘记旧令牌。 我使用JdbcTokenStore Spring服务实现此function: public void updatePassword(User user, String newPassword) { … // Update password in database clearUserTokens(user.getUsername()); } private void clearUserTokens(String userName) { Collection tokens = jdbcTokenStore.findTokensByUserName(userName); tokens.stream().forEach(jdbcTokenStore::removeAccessToken); } 这种方法是否正确? 处理这种情况有什么标准方法吗?

什么是用于缓解Logjam / weakdh.org的正确的JBoss EAP 6.0.1密码套件配置?

由于最近几天logjam和网站https://weakdh.org/(Logjam:Diffie-Hellman如何在实践中失败)的关注,我决定强化我的JBoss EAP 6.0.1系统上的SSL配置这里描述: 13.2.5。 SSL连接器参考: https : //access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Administration_and_Configuration_Guide/SSL_Connector_Reference1.html 交叉参考这里: http : //www.coderanch.com/t/613062/JBoss/configuring-SSL-Https-Jboss 我的standalone.xml的相关部分包含在下面的混淆forms中: 协议限制正在起作用,但据我所知,密码套件属性没有效果。 我已将列表缩减为仅两个套件,但JBoss在端口8443上返回的列表始终相同。 我已经针对Qualys SSL Labs测试了系统,并且返回的密码套件列表包含了我的列表中未包含的许多密码。 Cipher Suites (sorted by strength; the server has no preference) TLS_RSA_WITH_RC4_128_MD5 (0x4) WEAK 128 TLS_RSA_WITH_RC4_128_SHA (0x5) WEAK 128 TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) 128 TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33) DH 768 bits (p: 96, g: 96, Ys: 96) FS INSECURE 128 TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011) […]

如何在Java中设置TLS1.2版本

环境细节: java version “1.7.0_40” Java(TM) SE Runtime Environment (build 1.7.0_40-b43) Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode). 我们正在使用jboss-4.2.3.GA和使用ejb的胖客户端。 我们尝试通过以下方式设置TLS1.2版本: 控制面板 – >程序 – > Java – >高级选项卡 – >高级安全设置选中了TLS1.1和TLS1.2并取消选中剩余的旧版本。 但仍然在Wire shark软件中,我们看到客户端只与TLSV1中的服务器通信。 -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true 在启动脚本中给出,但在Wire shark软件中,我们看到客户端仅与TLSV1中的服务器通信。 参考链接: https : //superuser.com/questions/747377/enable-tls-1-1-and-1-2-for-clients-on-java-7 jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1 在jre/lib/security/java.security和jdk1.7.0_40/jre/lib/security/java.security 。 但仍然在Wire shark软件中,我们看到客户端只与TLSV1中的服务器通信。 参考链接: 如何强制java服务器只接受tls […]

request.getUserPrincipal()得到null

用户成功通过身份validation,但在进入下一个控制器后进行身份validation后,我获得了request.getUserPrincipal() null。 我正在使用websphere 7,我的应用程序是在spring mvc。 System.out.println(“subject.getPrincipals(): ” + subject.getPrincipals()); WSSubject.setRunAsSubject(subject); 在登录控制器中进行身份validation后,subject.getPrincipals()返回principal,但是当我转到下一个控制器时,我得到request.getUserPrincipal() null。 web.xml中 Administrator manager_Service manageservice /manageServiceList.htm Administrator CONFIDENTIAL application.xml中 Administrator IBM应用-bnd.xml 用户属于管理员组。 我的所有部署描述符都设置得很好。 知道我哪里弄错了吗?

无效的记住我令牌(系列/令牌)不匹配。 意味着以前的cookie盗窃攻击

org.springframework.security.web.authentication.rememberme.CookieTheftException: Invalid remember-me token (Series/token) mismatch. Implies previous cookie theft attack. at org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices.processAutoLoginCookie(PersistentTokenBasedRememberMeServices.java:102) at org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices.autoLogin(AbstractRememberMeServices.java:115) 我注意到processAutoLoginCookie方法被调用两次。 方法本身的行为似乎是正确的,例如,更新数据库中的令牌并更新客户端中的cookie。 任何有关这方面的帮助将不胜感激。

静态密钥为byte ,Key还是String?

我已经开始使用JJWT在我的服务器应用程序上处理JWT。 我的JWT秘密将存储在resources文件夹中,我将使用Properties类加载秘密。 JJWT提供了三种签名JWT的方法,一种使用byte[] ,另一种使用String ,另一种使用Key : JwtBuilder signWith(SignatureAlgorithm var1, byte[] var2); JwtBuilder signWith(SignatureAlgorithm var1, String var2); JwtBuilder signWith(SignatureAlgorithm var1, Key var2); 问题:关于安全性,字符集和其他问题,我应该使用哪些建议? 有一段时间,我站在String ,因为Properties返回一个String 。