【问题标题】:Avoid revealing source code for CSHTML and javascript避免泄露 CSHTML 和 javascript 的源代码
【发布时间】:2013-11-05 02:01:49
【问题描述】:

我有以下代码:

<html>
  <head>
  </head>
   <body>
    <!-- some more CSHTML code here -->
    <script src="https://js.braintreegateway.com/v1/braintree.js"></script>
    <script>
        var braintree = Braintree.create("SOME RANDOM KEY");
        braintree.onSubmitEncryptForm('braintree-payment-form');
    </script>
  </body>
</html>

我希望能够在不泄露源代码的情况下执行脚本。我有一把钥匙,但我不希望它被泄露。是否有一种安全可靠的方法来通过引用访问字符串(最好是从 C# 文件中)?有点像:

    <script>
        var braintree = Braintree.create(somefile.getString("string_key"));
        braintree.onSubmitEncryptForm('braintree-payment-form');
    </script>

【问题讨论】:

    标签: c# javascript html asp.net-mvc-3 razor


    【解决方案1】:

    如果代码在客户端运行,则密钥不能完全安全。坚定的用户可以监控网络流量并在密钥到达时监视它,或者执行 100 种其他操作中的一种来破坏密钥。

    【讨论】:

    • 您推荐的解决方案是什么?我仍然需要一种方法来使其安全或至少目前尽可能安全。
    • 一种解决方案是通过您自己的服务器路由您和 Braintree 之间的所有流量,并将密钥保存在服务器上。这就是我对任何需要像你描述的那样的键的方法。要问的问题是您的客户找到密钥的风险是什么。如果它足够低,则传递可能不值得付出努力。
    • 这个过程还涉及到其他三个键,但这都在后端。我会假设这使得这个密钥不那么有价值(它仍然非常有价值......这就是为什么我希望它尽可能难以找到)。当您说将此密钥保留在服务器上时,您的意思是在我们的服务器上(而不是 BrainTree 的服务器上),对吗?
    • 是的,完全正确。将请求发送到您的服务器,可能使用您在页面加载时添加的一次性密钥。一次性密钥不会阻止坚定的攻击者,但会降低随意绕过的可能性。一旦您处于客户端无法控制的执行环境中,您就可以验证请求并使用密钥将其传递给 Braintree。
    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    相关资源
    最近更新 更多