2009-07-21 67 views
1

好吧,我仍然对整个ASP.NET以及它是如何回到其页面的新东西。但我想知道它是否留下了页面上当前内容的痕迹。ASP.NET PostBack是否保持内容安全

例如,如果我有一个社会安全文本框,并希望加密它并将其发送到另一个服务器,我会通过隐藏的服务器脚本通过提交按钮或其他方式发回当前页面后执行此操作这种类型。

虽然如果当页面被发回自己时,它会显示数据。如果有人正在监听或有权访问您的浏览器日志,那么甚至可以将其安全地加密/传输到某个地方变得毫无意义。

因此,回发到页面保持数据的安全,还是打开它像查询字符串一样容易访问呢?如果它没有任何安全的方式来回到服务器的脚本呢?

回答

4

ASP.NET使用HTTP POST将数据发送到服务器 - 为了保护任何数据,使用SSL证书加密提交并使用HTTPS。

顺便说一句,这不是ASP.NET独有的 - HTTP POST是通过HTTP发送数据负载的行业标准方式。

+0

这可以防止黑客入侵的路由器或损坏的网络管理员不太可能发生的情况。它更可能是一个用户(谁能够以纯文本格式查看html源代码,不管是否需要)都想要摆脱视图状态。 – MatthewMartin 2009-07-21 19:43:40

0

传递到服务器时将其存储为业务对象非常安全,并且https是最安全的通道。

0

您可以使用AES加密视图状态。如果你想得到真正的偏执狂,把第一个请求的时间放到viewstate中,并在x分钟后拒绝使用viewstate。我忘记了viewstate mac的功能,但它又是一件好事,你可以打开。

最后,即使viewstate是安全的,如果您不使用SSL或有其他理由相信页面将被重播,它也会受到重播攻击。

4

的ViewState

使用ViewStateEncryption。您可以设置在页面级别:

<%@ Page Language="C#" ViewStateEncryptionMode="Always" %> 

您也可以将其设置在web.config中的站点级别:

<system.web> 
    <pages viewStateEncryptionMode="Always" /> 
</system.web> 

其它控制值

安德鲁野兔指出这并不包括持有values locally的控件。

请求和响应安全

记住,您需要确保内容的两种方式 - 并从服务器。 SSL将有助于这两者。

更多背景here

+1

文本框不会将其值存储在ViewState中 - ASP.NET会重新合并来自请求的表单输入的值,而不是来自ViewState。 “ – 2009-07-21 19:43:17

0

您需要使用SSL证书来保护任何表单后期值。另外请记住,如果浏览器被黑客入侵,一切都会被黑掉。

因此,在加密发生之前,用户仍然可以篡改表单数据或表单数据可以被插件捕获。其次,你不能保护愚蠢的用户免受黑客攻击。因此,请始终建议用户确保他们提交到正确的站点,并且他们没有看到任何证书错误。

最后,这是适用于任何东西,它通过https通信,而不是特定于ASP.NET

1

回发是用于通服务器变量 Web浏览器的方式,让他们每一件事之后通过返回,这样就保存了服务器需要跟踪页面浏览之间会话状态的信息。

将文本框/输入值初始传递给服务器是通过在HTTP连接中传递的传统GET或POST变量发生的,它与ASP.NET的PostBack/Viewstate功能无关。如果打开PostBack加密,它只会加密服务器发送给浏览器的内容,以便用户无法读取或修改这些变量。

您可以尝试通过在Javascript中编写加密函数来加密Web浏览器上的SSN字段值,然后将隐藏字段中的加密文本发送到服务器,但必须通过algotihm和任何加密密钥到浏览器,这意味着任何听到的人都可以看到明文SSN也可以看到加密代码,从而扭转您对加密SSN所做的任何尝试。

最好的解决方案是简单地让您的网站在SSL(https://)下运行,这意味着浏览器和服务器之间的整个通信都是加密的。没有必要重新发明加密轮。