【发布时间】:2014-01-08 08:46:21
【问题描述】:
听说有safety questions over the BinaryFormatter.
我将用户生成的文件从客户端发送到服务器。这些是序列化的类,然后由服务器读取。
根据我对上述链接的理解,这是危险的。但是我尝试过发送一次性类,甚至尝试过实现 ISerilizable 的类。但由于服务器不知道源程序集,两者都被拒绝了。
[Serializable]
public class Ship : ISerializable
{
public Ship()
{
}
public Ship(SerializationInfo info, StreamingContext context)
{
Console.WriteLine("test");
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
}
}
那么客户端如何通过这个向量成功地将代码输入我的服务器?通过伪造命名空间名称和公钥导致服务器尝试反序列化它,从而运行上面的代码?还是有更微妙的方法?
不幸的是,这个功能是我游戏的核心基础,所以我要小心。
【问题讨论】:
-
他们可能会向您发送您自己的任何恰好标记为可序列化的类。我认为这很危险。
-
您是否需要使用
BinaryFormatter,或者序列化您的数据?或者用二进制序列化你的数据? -
序列化作用于数据,而不是代码。如果你的代码容易受到恶意输入的攻击,那么是的,这可能是另一种攻击它的方式——就像注入恶意数据的任何其他方式一样。此外,原帖的答案大多是猜测,Java序列化不适用的cmets或真正人为的例子
标签: c# serialization binaryformatter