c# - 不受信任的反序列化策略

标签 c# .net serialization mono

我有一个非常复杂的对象网络,我想在不受信任的环境(网络浏览器,使用 Unity 3D)中序列化和反序列化。普通 BinaryFormatter 序列化工作正常,但反序列化因“访问私有(private)字段”错误而崩溃。当我在本地运行时它完美运行。

我不想通过公开我所有的私有(private)字段来让我的代码库变得糟糕。在不这样做的情况下使反序列化在不受信任的环境中工作的最佳方法是什么?我愿意改变序列化方法,BinaryFormatter 是最容易上手的。

更新 我不想阻止序列化访问我的私有(private)数据,我想允许序列化访问我的私有(private)数据而不必将其公开,妥协封装我的代码。

谢谢。

最佳答案

XmlSerializerJavaScriptSerializer 这样的序列化器对公共(public)成员起作用,所以它们应该(交叉手指)在信任方面可以接受地工作。如果您想要二进制文件,您也可以尝试使用 protobuf-net - 但我还没有积极测试这种情况(它适用于 Silverlight 之类的东西,它具有相当挑剔的信任模型)。

如果您想坚持使用 BinaryFormatter 但不希望它直接接触您的字段,您可以实现 ISerializable,但是手动完成这一切是......痛苦的。

关于c# - 不受信任的反序列化策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362783/

相关文章:

python - DjangoRestFramework 序列化程序的条件字段要求

c# - 是否可以在其实现的项目之外使用实现 Fody 编织器的属性?

c# - 继承通用抽象

c# - 为什么我的 CPU 使用率一直是 0%?

.net - 将参数传递给 .NET 定义的命令

android - 位图 toString 并再次返回

python - 使用 django 将 python 集存储在数据库中

c# - 如何在身份库的 asp.net core 中配置电子邮件发送?

c# - 如何避免重复的xaml代码

c# - 下拉列表中的图像