2

光子文档指出

在我们提供的应用程序框架(Lite、LoadBalancing 等)中,如果操作是加密发送的,服务器会自动响应加密。这使得通过打开加密的简单请求来获取关键数据是安全的。

可以在服务器端强制执行吗?如果调用或接收未加密的操作,那么 Photon 不会处理某些事件?

4

2 回答 2

1

您只需要OnStatusChanged为客户端设置陷阱,并在接收到Connect类型状态更改后,您可以在客户端上调用该EstablishEncryption方法。

这将发送所有通信都将被加密的要求。您将希望丢弃所有请求,直到您收到类型的状态更改EncryptionEstablished并断开客户端(如果您看到EncryptionFailedToEstablish),这为您提供了在完全建立加密之前不处理任何事件的功能。

至于在每个操作的基础上执行此操作,这将更加棘手。我建议只加密所有内容。开销很小,它可以解决您的问题。至于额外的 CPU 时间或 RAM 利用率或网络流量,它完全可以忽略不计。

有关此行为的实现的详细信息,您可以查看此参考

于 2014-01-24T18:23:54.003 回答
1

是的 - 您可以检查客户端是否在对等方中发送了在 OnOperationRequest 中加密的请求:

protected override void OnOperationRequest(OperationRequest request, SendParameters sendParameters)
{
...
if (!sendParameters.Encrypted)
{
    string message = string.Format("Only encrypted operations allowed.");
    var response = new OperationResponse { ReturnCode = (short)ErrorCode.OperationDenied, DebugMessage = message, OperationCode = request.OperationCode };
    this.SendOperationResponse(response, sendParameters);
    return;
}

您将实现自己的对等点并从框架对等点继承,看看 Lite 中的 MyAppliction。

于 2014-01-26T13:16:06.077 回答