내가 들었습니다. safety questions over the BinaryFormatter.BinaryFormatter는 악의적 인 코드를 deserialise합니까?
클라이언트에서 서버로 사용자 생성 파일을 보냅니다. 이들은 서버에 의해 읽혀지는 직렬화 된 클래스입니다.
위의 링크를 이해하면 위험합니다. 하지만 일회용 클래스를 보내려고했지만 심지어 ISerilizable을 구현 한 클래스를 사용해 보았습니다. 그러나 서버가 소스 어셈블리를 모르기 때문에 둘 다 거부되었습니다.
[Serializable]
public class Ship : ISerializable
{
public Ship()
{
}
public Ship(SerializationInfo info, StreamingContext context)
{
Console.WriteLine("test");
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
}
}
그러면 클라이언트가이 벡터를 통해 내 서버에 어떻게 코드를 성공적으로 가져올 수 있습니까? 네임 스페이스 이름과 공개 키를 위조하여 서버가 역 직렬화되도록 시도함으로써 위 코드를 실행합니다. 아니면 그것을 할 수있는 더 미묘한 방법이 있습니까?
이 기능은 불행하게도 내 게임의 근본 핵심이므로 조심하고 싶습니다.
그들은 아마도 당신에게 Serializable으로 표시되는 임의의 클래스를 보낼 수 있습니다. 나는 그것이 위험하다고 생각한다. – usr
'BinaryFormatter'를 사용하거나 데이터를 직렬화하기위한 요구 사항입니까? 또는 바이너리에서 데이터를 직렬화 하시겠습니까? –
직렬화는 코드가 아닌 데이터에서 작동합니다. * 귀하의 * 코드가 악의적 인 입력에 취약 할 경우, 다른 방법으로 악의적 인 데이터를 주입하는 것과 마찬가지입니다. 게다가 원래 게시물에 대한 답변은 대부분 추측이었고 Java 직렬화에 대한 적용 할 수없는 의견 또는 실제로 고안된 예제였습니다. –