【问题标题】:Mandate encryption on photon server在光子服务器上强制加密
【发布时间】:2014-02-15 12:02:58
【问题描述】:

photon docs 声明

在我们提供的应用框架(Lite、LoadBalancing 等)中, 如果操作是加密发送的,服务器会自动响应加密。 这样一来,只需在开启加密的情况下进行请求即可安全地获取关键数据。

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

【问题讨论】:

    标签: encryption cryptography photon


    【解决方案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。

    【讨论】:

      【解决方案2】:

      您只需为客户端捕获OnStatusChanged,并在收到Connect 类型状态更改后,您可以在客户端上调用EstablishEncryption 方法。

      这将发送所有通信都必须加密的要求。在收到EncryptionEstablished 类型的状态更改之前,您需要放弃所有请求,如果看到EncryptionFailedToEstablish,则断开客户端连接,这为您提供了在完全建立加密之前不处理任何事件的功能。

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

      关于此行为的具体实现,可以查看this reference。

      【讨论】:

        猜你喜欢
        • 2014-05-28
        • 2023-04-10
        • 1970-01-01
        • 2011-08-05
        • 2023-03-10
        • 1970-01-01
        • 2015-05-01
        • 2018-05-21
        • 2014-10-02
        相关资源
        最近更新 更多