- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
帖子结构:
<强>1。场景鉴于我可以编辑(Serialized 类的)(私有(private)嵌套)SerializedProxy 的序列化字节流来打破 SerializedProxy 本身的不变量,因此我可以更改正在反序列化的实例。
在这种情况下,我可以访问 SerializedProxy 类的序列化形式,对正在序列化的类进行字节流攻击同样容易而无需在 readResolve() 中强制执行不变量。
<强>2。问题
SerializationProxy 方法声称的安全性(针对字节流攻击)是否纯粹基于这样的假设:攻击者始终无法获得 SerializedProxy 的序列化形式或源代码的内容?如果没有,我是否误解或错过了这里的某些实现部分?
3.代码 (注意:Serializer 是一个 util 类,它将序列化对象写入文件。)
3.1 将代理序列化为值 5。
import java.io.Serializable;
import java.io.InvalidObjectException;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class SerializationProxyTest implements Serializable
{
final int id;
private SerializationProxyTest(int val)
{
id = val;
}
private void writeObject() throws InvalidObjectException, IOException
{
throw new InvalidObjectException("Invalid object called for Serialization: proxy not found.");
}
private Object writeReplace()
{
System.out.println("writeReplace 1 ");
return new SerializationProxy(this);
}
private static class SerializationProxy implements Serializable
{
final int id;
SerializationProxy(SerializationProxyTest obj)
{
this.id = obj.id;
}
/* private void writeObject(ObjectOutputStream oos) throws IOException
{
oos.defaultWriteObject();
} */
private Object readResolve()
{
System.out.println("readResolve step 1 ");
return new SerializationProxyTest(this.id);
// return "Something Else!";
}
}
public static void main(String[] args) throws IOException, ClassNotFoundException
{
Serializer.serializeObject(new SerializationProxyTest(5));
SerializationProxyTest spt = (SerializationProxyTest) Serializer.deserializeObject("/home/code/java/serialized_proxy_class.ser");
System.out.println("stored variable is: " + spt.id);
}
}
3.1输出:
[java]$ java SerializationProxyTest
writeReplace 1
readResolve 1
object is: SerializationProxyTest@4eec7777
stored variable is: 5aced 0005 7372 0029 5365 7269 616c 697a 6174 696f 6e50 726f 7879 5465 7374 2453 6572 6961 6c69 7a61 7469 6f6e 5072 6f78 793b 8ab7 89f9 dd6d aa02 0001 4900 0269 6478 7000 0000 05
3.2 更改序列化的 SerializedProxy 将变量的值更改为 6。
aced 0005 7372 0029 5365 7269 616c 697a 6174 696f 6e50 726f 7879 5465 7374 2453 6572 6961 6c69 7a61 7469 6f6e 5072 6f78 793b 8ab7 89f9 dd6d aa02 0001 4900 0269 6478 7000 0000 06
3.3 通过反序列化来初始化 Serialized 类更改的 SerializedProxy:SerializationProxyTest 类使用 6 而不是 5 进行初始化。
SerializationProxyTest spt = (SerializationProxyTest) Serializer.deserializeObject("/home/code/java/serialized_proxy_class.ser");
System.out.println("stored variable is: " + spt.id);
[java]$ java SerializationProxyTest
writeReplace 1
readResolve 1
object is: SerializationProxyTest@4eec7777
stored variable is: 6
4.附加信息/注释:SerializedProxy 方法的某些固有“安全性”的假设只是阅读“Effective Java”时产生的好奇心。这里做出的另一个假设是,即使不了解类结构,攻击者也可以通过反复试验对字节流进行有效的更改。
最佳答案
反序列化时,串行代理必须强制执行与构造函数相同的不变量(或者静态创建方法的不变量,如果您要走这条路线)。这通常是通过串行代理使用公共(public)构造函数(或方法)创建真实对象来实现的。
在问题的代码中,id
始终为 5 的不变量存在于静态创建方法 (main
) 中。串行代理代码不使用它。
注意:您的 SerializationProxyTest
是可子类化的。 Java 字节码不要求类具有构造函数,因此基类不需要具有可访问的构造函数。一般来说,您的类的任何非最终公共(public)或 protected 方法都可以被重写。
另请注意,《Effective Java》第 3 版的序列化章节中有更正 - 不要使用早期版本。
关于java - SerializationProxy 的字节流攻击 : is it safer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58028028/
我想创建一个游戏,您可以在其中尝试避开“攻击”您的物体(圆圈)。我这样做的方式: 首先计算对象和我之间的 x_and y 差值(在这段代码中 AI_x 是对象的 x 位置(AI_y:y 位置),x,y
前言 传统的 DDOS 防御通常使用“硬抗”的方式,导致开销很大,而且有时效果并不好。例如使用 DNS 切换故障 IP 的方案,由于域名会受到缓存等因素的影响通常有分钟级延时,前端难以快速生效。例
我们目前正在使用 OWASP Antisamy 项目来保护我们的应用程序免受 XSS 攻击。当任何给定的表单提交给服务器时,每个输入字段都会被清理。它工作正常,但我们在公司名称、组织名称等字段上遇到问
正则表达式: ^\d+(\.\d+)*$ 我试图打破它: 1234567890.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.
我正在创建一个网页,用户可以在其中交互并在远程计算机上执行基本的文件系统操作(创建文件/目录、删除文件/目录、导航文件系统)。 该网页是基本的 HTML(UTF-8 编码)和 Javascript。我
两个客户端 Alice 和 Bob 使用服务器登录并通过服务器交换消息。登录时,他们都发送他们的公钥以存储在服务器上。当 Alice 想与 Bob 通话时,她用 Bob 的公钥加密一个对称 key ,
一直在阅读 MitB 攻击,有些事情让我担心。 来自 WIKI : The use of strong authentication tools simply creates an increased
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
我正在使用 Summernote 所见即所得编辑器(如下所示),发现它使用 HTML 标签来格式化文本。 如何保护我的应用程序免受 XSS 攻击?我将输入存储为纯文本,并使用输出:{!! $body
我有一个应用程序,用户可以在其中注册并输入他们的手机和其他数据。 为了验证用户是否有效,在我将其保存到我的数据库之前,我向用户发送了一 strip 有代码的短信。之后他们应该在表单中输入代码。 问题是
由于 xpath 注入(inject)攻击正在攻击网站,因此我们需要保护 xml 文档作为 xpath 查询参数化的解决方案。如果有人可以解释xpath查询的参数化是什么意思,请帮忙?以及这种参数化如
我想知道电子邮件地址是否可以用于 XSS 攻击。 假设有一个网站,您可以在其中注册并提供他的电子邮件地址。如果有人想攻击给定的网站,他或她可能会创建一个电子邮件地址,例如: ""@stmpname
这可能更适合 Serverfault,但许多只来这里的 web 开发人员可能会从这个问题的可能答案中受益。 问题是:您如何有效地保护自己免受针对您的网络服务器的拒绝服务攻击? 看完这篇 article
检查引荐来源网址是否足以防止跨站点请求伪造攻击?我知道引荐来源网址可能会被欺骗,但是攻击者有没有办法为客户端做到这一点?我知道代币是常态,但这行得通吗? 最佳答案 这是一个 3 年前的问题,有四个不同
我从输入类型中获取值,如下所示: var num = $(document).find('#num').val(); 我尝试使用以下代码来避免输入类型受到 XSS 攻击: num = j
我需要使用超链接动态更新以下代码中的“src”链接,该超链接又指向另一个 .js 文件。以下只是用于“src”的示例 URL。我的问题是,允许在运行时更改“src”,此代码是否容易受到 XSS 攻击?
我在 OWASP 和网络上看到了很多关于如何避免/防止 XSS 攻击的信息。但是,我还没有找到任何提及在检测到 XSS 攻击时如何响应的内容。 应返回什么 HTTP 状态代码(即 400、403...
保护站点免受 DoS 攻击的最佳方法是什么?知道流行的网站/服务如何处理这个问题吗? 应用程序、操作系统、网络、托管级别有哪些工具/服务? 如果有人能分享他们处理过的真实经历,那就太好了。 谢谢 最佳
我到处寻找缓解方法 this vulnerability ,我发现类似: Just disable http compression. 嗯,这很痛苦,因为压缩可以节省大量带宽,而且还可以让您的网页加载
服务器,一个运行 Spring 2.5.6 的独立 SE 应用程序和一个嵌入式 jetty 。客户端、Swing 应用程序使用 HttpInvoker 连接到服务器。 服务器公开了很多服务,现在出现了
我是一名优秀的程序员,十分优秀!