0

我在安全审查期间遇到了一个奇怪的要求,我必须防止用户名和密码通过 HTTP GET 在 asp.net 网络表单中发送。

场景是这样的。

我们有简单的 asp.net 登录表单,其中包含用户名、密码和提交按钮(POST 方法)。在安全审查期间,安全测试人员使用一些代理工具(Burp Suite)将 Form 方法更改为 GET,然后将用户名和密码作为查询字符串发送过来。

GET /Login.aspx?_ LASTFOCUS=& _EVENTTARGET=&_ EVENTARGUMENT=& _VIEWSTATE=''&_ SCROLLPOSITIONX=0& _SCROLLPOSITIONY=0&__EVENTVALIDATION=%2FwEWCgKm973fCgKOieLQt9kH6PhK0wq%2FpfP8pXG%2FF&%24txtUser=abc@abc.com&txtPassword=1233&%24btnLogin=Login

根据安全测试团队的说法,GET(使用代理工具将表单方法更改为 GET)方法不应在查询字符串中传递用户密码。(根据我的理解,GET 将始终将值作为查询字符串传递,即使它是密码字段)

4

1 回答 1

1

实现所需内容的一种简单方法是将服务器端指定为仅查看发布的值服务器端并忽略查询字符串项,例如使用

Request.Form["foo"]

代替

Request["foo"] 

或者

Request.QueryString["foo"]

这没有安全原因,实际上您只是想使用 SSL。

于 2013-08-14T10:34:36.310 回答