ASP.NET PostBack是否保证内容安全

时间:2009-07-21 19:37:37

标签: asp.net postback

好的,我还是整个ASP.NET的新手,以及它如何回发到它的页面。但我想知道它是否留下了页面上当前内容的痕迹。

例如,如果我有一个社会保障文本框,并想加密它并将其发送到另一台服务器,我会通过隐藏的服务器脚本通过提交按钮或其他内容回发到当前页面后执行此操作那种。

虽然当页面被发布回自身时,它会显示数据。如果有人在监听或有权访问您的浏览器日志,那么即使在安全的地方加密/转移也毫无意义。

那么回发到页面是否保持数据安全,或者是否打开它以便像查询字符串那样轻松访问?如果没有,有没有安全的方法回到服务器的脚本吗?

6 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

<强>视图状态

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

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

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

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

其他控制值

正如Andrew Hare所指出的那样,这并没有涵盖持有values locally的控件。

请求和响应安全性

请记住,您需要以双向方式保护内容 - 进出服务器。 SSL将有助于这两者。

更多背景here

答案 2 :(得分:1)

PostBack用于将服务器变量传递给 Web浏览器,以便稍后传递返回,从而节省服务器跟踪信息的需要在页面视图之间的会话状态。

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您可以使用AES加密视图状态。如果你想变得非常偏执,请将第一个请求的时间放入viewstate,并在x分钟后拒绝使用viewstate。我忘记了viewstate mac的功能,但是你可以打开另一个好东西。

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

答案 5 :(得分:0)

您需要使用SSL证书来保护任何表单帖子值。还要记住,如果浏览器被黑客入侵,一切都被黑了。

因此,在加密发生之前,用户仍然可以篡改表单数据或插件可以捕获表单数据。

其次,你无法保护愚蠢的用户免受黑客攻击。因此,始终建议用户确保他们提交到正确的站点,他们没有看到任何证书错误。

最后,这适用于通过https进行通信并且不是特定于ASP.NET的任何事物和所有事物