【发布时间】:2014-02-15 12:02:58
【问题描述】:
photon docs 声明
在我们提供的应用框架(Lite、LoadBalancing 等)中, 如果操作是加密发送的,服务器会自动响应加密。 这样一来,只需在开启加密的情况下进行请求即可安全地获取关键数据。
可以在服务器端强制执行吗?如果调用或接收未加密的操作,那么 Photon 不会处理某些事件?
【问题讨论】:
标签: encryption cryptography photon
photon docs 声明
在我们提供的应用框架(Lite、LoadBalancing 等)中, 如果操作是加密发送的,服务器会自动响应加密。 这样一来,只需在开启加密的情况下进行请求即可安全地获取关键数据。
可以在服务器端强制执行吗?如果调用或接收未加密的操作,那么 Photon 不会处理某些事件?
【问题讨论】:
标签: encryption cryptography photon
是的 - 您可以检查客户端是否在对等体中发送了在 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。
【讨论】:
您只需为客户端捕获OnStatusChanged,并在收到Connect 类型状态更改后,您可以在客户端上调用EstablishEncryption 方法。
这将发送所有通信都必须加密的要求。在收到EncryptionEstablished 类型的状态更改之前,您需要放弃所有请求,如果看到EncryptionFailedToEstablish,则断开客户端连接,这为您提供了在完全建立加密之前不处理任何事件的功能。
就每个操作执行此操作而言,这将更加棘手。我建议只加密所有内容。开销很小,它可以解决您的问题。就额外的 CPU 时间或 RAM 利用率或网络流量而言,它完全可以忽略不计。
关于此行为的具体实现,可以查看this reference。
【讨论】: