Asp.net 如何在web应用程序中验证回发数据

Asp.net 如何在web应用程序中验证回发数据,asp.net,security,authentication,web-applications,authorization,Asp.net,Security,Authentication,Web Applications,Authorization,考虑一个假设的银行应用程序,其中我们有帐户和一些管理员组。每个管理员对某些帐户都有修改权限。若要保存对帐户所做的修改,应用程序将在编辑页面上发送帐户id。管理员可以使用诸如fiddler之类的工具更改post请求。如果他/她将帐户id更改为未经授权的某个帐户id。那么最好的检测方法是什么呢 我应该使用什么策略来重新验证每一条数据,以便在回邮时进行授权?我更关心的是设计,而不是代码 换句话说,现实世界的应用程序如何确保即使用户正在更改来自任何工具的回发请求,应用程序也能够检测到它。对于银行等关键应

考虑一个假设的银行应用程序,其中我们有帐户和一些管理员组。每个管理员对某些帐户都有修改权限。若要保存对帐户所做的修改,应用程序将在编辑页面上发送帐户id。管理员可以使用诸如fiddler之类的工具更改post请求。如果他/她将帐户id更改为未经授权的某个帐户id。那么最好的检测方法是什么呢

我应该使用什么策略来重新验证每一条数据,以便在回邮时进行授权?我更关心的是设计,而不是代码


换句话说,现实世界的应用程序如何确保即使用户正在更改来自任何工具的回发请求,应用程序也能够检测到它。

对于银行等关键应用程序,我建议遵循安全步骤

1) 发送加密的帐户ID 2) 将该帐户id保留在隐藏字段中,当用户发布数据时,从隐藏字段中获取帐户id不会形成文本框或标签。
3) 重新验证每一条数据,以便在回邮时进行授权。

对于银行等关键应用程序,我建议遵循安全步骤

1) 发送加密的帐户ID 2) 将该帐户id保留在隐藏字段中,当用户发布数据时,从隐藏字段中获取帐户id不会形成文本框或标签。 3) 重新验证每一条数据,以便在回邮时进行授权

我是否应该在回邮时重新验证每一条数据以进行授权

是的,没错。您应该从“所有输入都是邪恶的”理念开始,然后通过验证每个数据点来证明该语句不正确。如果您的整个数据没有通过验证,那么您的输入确实是有害的

智能web应用程序采用客户端和服务器端验证。客户端验证可在不进行服务器往返的情况下快速提醒用户错误/缺失,服务器端验证可确保即使有人“摆弄”客户端验证代码(并覆盖它),错误数据也不会从裂缝中掉落

不幸的是,在客户端加密数据将不起作用,因为在客户端(JS代码中)也有密钥。这不会阻止恶意用户加密恶意负载。此外,对于恶意攻击者来说,隐藏字段等混淆也是低效的。仅供参考,您甚至不需要fiddler来更改字段/后参数等-您所需要的只是一个

口头禅是“验证服务器端的每件事”。句号

我是否应该在回邮时重新验证每一条数据以进行授权

是的,没错。您应该从“所有输入都是邪恶的”理念开始,然后通过验证每个数据点来证明该语句不正确。如果您的整个数据没有通过验证,那么您的输入确实是有害的

智能web应用程序采用客户端和服务器端验证。客户端验证可在不进行服务器往返的情况下快速提醒用户错误/缺失,服务器端验证可确保即使有人“摆弄”客户端验证代码(并覆盖它),错误数据也不会从裂缝中掉落

不幸的是,在客户端加密数据将不起作用,因为在客户端(JS代码中)也有密钥。这不会阻止恶意用户加密恶意负载。此外,对于恶意攻击者来说,隐藏字段等混淆也是低效的。仅供参考,您甚至不需要fiddler来更改字段/后参数等-您所需要的只是一个


口头禅是“验证服务器端的每件事”。期间。

感谢您的回复,我理解客户端和服务器端数据验证的重要性。当您验证web页面上的数据时,这相当快,但通常授权规则在数据库中,若我必须重新验证授权,我必须在回发时再次点击db。我之前问错了,我的问题是如何重新验证每一条数据。例如,我可以动态创建guid发送guid而不是实际的帐户id,并在会话中存储映射。在回发时,如果用户调整guid,我将无法获得实际的帐户id。应用程序是安全的。如果您确实可以确定guid未被篡改,并且guid是唯一要防止篡改的内容,则可以执行此操作。h调整GUID是一种可以保证这一点的方法。但是,我仍然不确定您希望在每个请求上授权什么。成功登录框架后,将为您执行会话管理。准备一些会话变量,在she登录时存储用户的授权/访问级别。每次请求时,请确保使用内存会话变量验证授权/访问。感谢您的回复,我理解客户端和服务器端数据验证的重要性。当您验证web页面上的数据时,这相当快,但通常授权规则在数据库中,若我必须重新验证授权,我必须在回发时再次点击db。我之前问错了,我的问题是如何重新验证每一条数据。例如,我可以动态创建guid发送guid而不是实际的帐户id,并在会话中存储映射。在回发时,如果用户调整guid,我将无法获得实际的帐户id。应用程序是安全的。如果您确实可以确定guid未被篡改,并且guid是唯一要防止篡改的内容,则可以执行此操作。h调整GUID是一种可以保证这一点的方法。但是,我仍然不确定您希望在每个请求上授权什么。成功登录框架后,将为您执行会话管理。准备一些会话变量,在she登录时存储用户的授权/访问级别。每次请求时,请确保使用内存会话变量验证授权/访问。