草庐IT

企业安全

全部标签

java - 为网站添加额外的安全性

我正在运行一个基于JavaSpringMVC的Web应用程序。它还基于Hybris平台。现在,身份验证和授权方面的基本功能已经实现。这意味着我们确实有session过滤器、有效的用户系统等。但是,我们目前没有针对XSS和其他可能存在的攻击类型的安全措施。XSS可能是最大的问题,因为它是最常见的攻击方式。现在,我想知道......采取哪些步骤是明智的?我环顾四周,发现存在XSS-Filter之类的东西。实现这样非常简单,只需复制源代码并将其添加为tomcatsweb.xml。但我想知道这样的过滤器是否能提供令人满意的安全性?还有更多臃肿的解决方案,例如我可以使用spring-securi

java - javax.servlet.ServletContext set/getAttribute 线程安全吗?

必须在javax.servlet.ServletContext中使用setAttribute()和getAttribute(String),我找不到任何关于预期的信息并发访问的行为。但是,这些操作很可能会被不同的线程调用。servletspecification3.0状态:Aservletcanbindanobjectattributeintothecontextbyname.AnyattributeboundintoacontextisavailabletoanyotherservletthatispartofthesameWebapplication.但是,没有关于这些操作的并发行

java - KeyGenerator 线程安全吗?

我想知道我是否可以实例化javax.crypto.KeyGenerator仅一次,然后在多线程环境中使用此实例。它的JavaDoc文档没有说明它的线程安全性。或者使用ThreadLocal会更好方法?更新:一个相关的问题是IsSecureRandomthreadsafe?虽然JavaDoc没有声明该类是线程安全的,但社区仍然认为它是线程安全的决定从实践的角度来看非常重要。我想知道KeyProvider的情况。 最佳答案 除非文档明确保证线程安全,否则将任何事物视为非线程安全。你是对的,这种哲学对线程安全文档的稀缺性几乎没有帮助...

java - SecurityContextHolder 线程安全吗?

我使用SecurityContextHolder和自定义UserDetailsS​​ervice从SecurityContextHolder获取UserDetails:Objecto=SecurityContextHolder.getContext().getAuthentication().getPrincipal();UserDetailsDTOuser=(UserDetailsDTO)o;我遗漏了空检查等,但就是这样。我在@Aspect的@Around切入点中使用它:@Around("execution(*user.service.*.*(..))")publicObjectau

java - java.util.Vector 序列化线程安全吗?

我知道Vector类对于添加和删除元素是线程安全的[reference].如果我使用ObjectOutputStream序列化一个Vector,即使其他线程在序列化过程中添加和删除对象,我是否可以保证在反序列化时保持一致(且未损坏)的状态? 最佳答案 writeObject()方法是同步的。但是Javadoc中没有任何内容可以保证这一点,除非声明“vector是同步的”暗示了这一点。请注意,readObject()方法不需要同步,因为在readObject()返回之前,任何人都无法访问该对象。

java - 将线程安全对象放在 ThreadLocal 上有什么好处吗?

我最近看到一段代码,它使用了一个ThreadLocal对象并在其中保存了一个ConcurrentHashMap。这有什么逻辑/好处,还是多余的? 最佳答案 如果对并发散列图的唯一引用驻留在ThreadLocal中,则散列图显然仅从单个线程引用。在这种情况下,我会说它是完全多余的。然而,不难想象有人与其他线程“共享”线程本地存储的HashMap:ThreadLocal>tl=...//...finalConcurrentHashMapprops=tl.get();EventQueue.invokeLater(newRunnable()

java - 在 Java 6 和 7 中处理安全可变参数,需要说明

JDK在处理安全变量参数方面的主要区别是什么?以上在JDK1.6中发出警告-Typesafety:AgenericarrayofListiscreatedforavarargsparameter为什么会在此处看到此警告?JDK1.7做了什么来抑制它?请帮助我理解。 最佳答案 JDK7添加了@SafeVarargsannotation注意通用可变参数何时真正安全,并将该注释应用于例如Collections.addAll。 关于java-在Java6和7中处理安全可变参数,需要说明,我们在S

java - 将 java 远程调试器端口公开到 Internet 是否安全?

我打算公开一个端口,用于通过互联网远程调试基于Java的Web服务,但三思而后行,我意识到它没有任何身份验证。理论上,似乎可以编写一个工具,附加到远程调试器端口,并通过JavaAPI执行任意系统命令。或者修改/转储数据库,等等。至少这个漏洞似乎是这样http://securityaffairs.co/wordpress/36394/hacking/paypal-remote-code-execution.html我不记得曾被强烈警告过要公开远程调试器端口。但如今,当数百个僵尸网络扫描端口寻找漏洞时,应该更好地宣传它。任何人都可以评论它是否安全和/或如何在任意基于java的网络服务上以安

java - 确保通用 lambda 表达式的类型安全

这是对Java8retrievinglambdasetterfromclass的跟进.我正在尝试获取给定字段的getter方法publicIGettergetGetter(Classclazz,Fieldfield){ClassfieldType=null;try{fieldType=(Class)field.getType();}catch(ClassCastExceptione){error("Attemptedtocreateamistypedgetterforthefield"+field+"!");}returngetGetter(clazz,field.getName(),

java - 从 Java 内存模型的角度理解为什么在构造函数中启动线程是不安全的

这个问题在这里已经有了答案:Whyshouldn'tIuseThread.start()intheconstructorofmyclass?(2个答案)关闭3年前。根据JavaConcurrencyinPractice,在类构造函数中启动线程是危险的。原因是在对象完全构造之前,this将this指针暴露给另一个线程。尽管这个话题在之前的许多StackOverflow问题中都有讨论,但我仍然难以理解为什么这是一个如此令人担忧的问题。特别是,我希望从Java内存模型的角度澄清在构造函数内启动线程是否会导致内存一致性问题。让我举一个具体的例子来说明我想做的事情。(这段代码的期望输出是将数字2