0

在传输过程中使用 SSL 以防止第三方读取和修改传输的数据。

将数据发送到服务器并从服务器获取答案的用户显然可以以任何他或她想要的方式查看和修改数据。因此用户可以修改包含视图状态的隐藏表单字段。Base64 转义在这里不提供任何保护,它只是一种确保二进制数据不会被字符集对话弄乱的方法。

因此,如果您的视图状态/隐藏字段包含可信信息,恶意用户不得修改,您需要为其启用加密和签名。

我对声明有点困惑

这只是一种确保二进制数据不会被字符集对话弄乱的方法。用户试图说“二进制数据不会被字符集对话弄乱”的任何内容都可以更详细地解释它。

如何启用隐藏字段的加密和签名?

如何签署隐藏字段?请指导我在 asp.net MVC 中加密和签名隐藏字段的所有步骤?

谢谢

4

2 回答 2

1

由于用户控制浏览器,因此您对“恶意用户”几乎无能为力。您唯一可以可靠地做的就是在服务器端过滤和仔细检查输入。如果你真的想你可以执行一些混淆,但加密和签名不会帮助你。在最坏的情况下,您将在没有发送数据的情况下创建信任。

确保您的服务器安全,最好使用更高级别的语言(没有缓冲区溢出)执行良好的过滤,并确保您的 TLS 设置免受已知攻击(例如 BEAST 攻击)。这是你能做的最好的...

于 2013-09-23T18:29:12.033 回答
0

您可以使用 MVC 安全扩展项目https://mvcsecurity.codeplex.com

假设您要保护的领域是 Id...

在您的控制器发布方法上添加:

[ValidateAntiModelInjection("Id")]

在您的视图中添加:

@Html.AntiModelInjectionFor(m => m.Id)
@Html.HiddenFor(m => m.Id)

在发布时,您的 ID 字段将被验证。

于 2013-12-05T07:28:17.673 回答