草庐IT

通信安全

全部标签

java - 使 spring 安全 session 无效

我需要使(或踢)用户session无效。该应用程序仅限制用户登录每个容器只有一个用户。我尝试从session注册表中调用removeSessionInformation,它已完成以解锁用户。这样其他用户就可以使用被踢session的用户名登录。但被踢出的用户的SessionContextHolder仍然存在。所以他们仍然有相同的权限访问protected页面。如何从指定的session注册信息中使SessionContextHolder的Principal失效或移除?ps:在我的旧应用程序中,我在UserDomain(UserDetails)中提供了一个变量来保存HttpSession

java - 我的类(class)线程安全吗?如果不是为什么?

我的类是线程安全的吗?如果不是,为什么?classFoo{booleanb=false;voiddoSomething()throwsException{while(b)Thread.sleep();}voidsetB(booleanb){this.b=b;}} 最佳答案 代码不是线程安全的,因为正在运行的线程可能会看到更改,直到代码被编译(可能在稍后的随机点)并且您不再看到更改。顺便说一句:这使得测试变得非常困难。例如如果您睡1秒钟,您可能会在将近三个小时内看不到这种行为。即它可能有效,也可能无效,你不能仅仅因为它有效就说它会继续

java - 为什么 Java 安全编码很重要?

我无法理解为什么Java安全编码很重要。例如,为什么声明变量私有(private)很重要?我的意思是我知道这将使得无法从类外部访问这些变量,但我可以简单地反编译类以获取值。同样,将一个类定义为final将无法子类化该类。什么时候对一个类进行子类化对安全性是危险的?同样,如果有必要,我可以反编译原始类并使用我想要的任何恶意代码重新实现它。当用户“信任”应用程序时是否会出现问题?然后人们可以以某种方式滥用这种信任?基本上我正在寻找的是一个很好的例子,说明为什么应该遵循安全编码指南。 最佳答案 编程很难。如果您定义严格的API,不公开不应

Java进程间通信和线程间通信?

Java上下文中的线程和进程有什么区别?Java中进程间通信和线程间通信是如何实现的?请指出一些现实生活中的例子。 最佳答案 根本区别在于线程存在于相同的地址空间中,而进程存在于不同的地址空间中。这意味着线程间通信是关于传递对对象的引用和更改共享对象,而进程是关于传递对象的序列化副本。在实践中,Java线程间通信可以实现为对共享对象的普通Java方法调用,并引入适当的同步。或者,您可以使用新的并发类来隐藏一些本质上(并且容易出错)的同步问题.相比之下,Java进程间通信基于将状态、请求等转换为字节序列的最低级别,这些字节序列可以作为

java - 如何证明java中的HashMap不是线程安全的

我正在开发一个应用程序,它使用HashMap来共享状态。我需要通过单元测试来证明它在多线程环境下会有问题。我尝试通过检查两者中HashMap的大小和元素来检查单线程环境和多线程环境中应用程序的状态。但这似乎无济于事,状态始终相同。是否有任何其他方法可以证明或证明对map执行操作的应用程序可以很好地处理并发请求? 最佳答案 这很容易证明。不久HashMap基于数组,其中每个项目代表一个桶。随着更多键的添加,桶会增长,并且在某个阈值时,数组会被重新创建,并具有更大的大小,以便其桶分布得更均匀(性能考虑)。在数组重新创建期间,数组变为空,

java - 哪个更安全,为什么是 JSON 或 XML

我想在JavaEE中实现Web服务,其响应将是一个JSON。这是我第一次尝试这样做,但在此之前我只想知道JSON是否存在任何安全问题,因为在我读到的许多博客中到处都提到它,比如“与XML相比,JSON不安全”。JSON具有易于使用、速度更快等几个优点。所以任何人都可以向我解释JSON是否真的不安全的真相。如果是这样,为什么会这样。请举例说明。有几篇关于该主题的旧文章:JSONvsXML-2006对eval的担忧JSONisnotassafeaspeoplethinkitis声称只有通过JSON提供的非公开数据的保护是使用唯一的url。CSRF(CrossSiteRequestFoger

java - 为什么从 ByteBuffer 的绝对读取不被认为是线程安全的?

我的用例需要一个直接分配的ByteBuffer写入一次,然后由许多并发线程读取。所有读取都是绝对的,所以我从不关心缓冲区的状态(位置、限制、标记)。ThisarticleKeithGregory在字节缓冲区上警告说,即使是绝对读取也不被认为是线程安全的:ByteBufferthreadsafetyiscoveredintheBufferJavaDoc;theshortversionisthatbuffersarenotthread-safe.Clearly,youcan'tuserelativepositioningfrommultiplethreadswithoutaracecond

java - 在 transformerFactory 中设置 FEATURE_SECURE_PROCESSING 是否也会更新其他安全功能?

在jdk1.6中,我在设置的时候transformerFactory.setFeature(XMLConstants.ACCESS_EXTERNAL_DTD,false)我遇到了以下错误:javax.xml.transform.TransformerConfigurationException:Cannotsetthefeature'http://javax.xml.XMLConstants/property/accessExternalDTD'onthisTransformerFactory.atorg.apache.xalan.processor.TransformerFactor

java - Jasper 与不同应用程序之间的通信

我有JasperReportsServer(安装在www.example.com上)和一个单独的Java/JSP应用程序(安装在www.example.net上),我正在寻求不同的选项来生成报告。选项1(当前工作解决方案)我目前的工作解决方案是用户登录到Java/JSP应用程序,然后选择一个报告。应用程序创建报告的XML表示形式,将其保存为fileNameXML,然后使用如下代码将其发送到JasperReportsServer:">(请注意,即使我在URL中传递了用户名和密码,安全性也不会受到影响,因为文件名XML是使用StringfileName=UUID.randomUUID().

2015 年的 Java 进程间通信(没有样板)?

我的用例:process-1“数据库”,将>1GB的数据从数据文件加载到内存中(仅加载需要30-60秒)process-2“客户”希望快速访问该数据而不必全部加载它们是在同一台机器上运行的独立进程。我想在进程之间传输的数据是包含原始类型(整数、字符串、boolean值)的集合(列表、映射)。我知道这可以通过打开套接字连接(在序列化数据时创建一些特定的协议(protocol))或通过RMI(或多或少相同的事情)来完成。我们在15年前就已经完成了这两项工作。现在还没有人将其自动化,以便通过使用一些库,您可以设置@InterProcessMethod("some","details")并且能