GET请求,安全性和Web服务

时间:2010-11-05 03:21:14

标签: asp.net web-services security http

我记得前一段时间读过来自webbrowser的所有GET请求都会被记录下来。它是否正确?这些日志位于哪里?

如果有,有什么办法可以防止记录您的webservice用户名和密码吗?

我知道我可以更改我的web服务以接受POSTS(如果我没记错,文章说没有记录),但我遇到的问题是当前webservice接受GETS并返回JSON和POSTS返回XML。这似乎是一个方便的功能,我想保留。

有关此类情况的最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

GET请求进行身份验证时会遇到特定问题,其中用户凭据以纯文本形式作为查询参数发送到URL。大多数Web服务器都会记录所有请求的动词和URL,因此当凭据属于URL的一部分时,它们将显示在Web服务器日志中。

另一方面,POST请求通常发送请求正文中的数据,因此它不会显示在Web服务器日志中,因为标准日志记录配置不会记录请求的有效负载。也就是说,即使您切换到使用POST,管理员仍然可以配置托管Web服务器来记录每个请求的有效负载。

要回答您的具体问题 - 不,如果用户凭据是请求URL的一部分,则无法阻止Web服务器记录用户凭据。但是,您可以(并且应该)更改您的代码,至少不以纯文本形式发送凭据,但至少使用您的Web服务在当前会话开始时生成的哈希盐哈希(并放入cookie中例)。由于cookie未在服务器上记录,并且哈希盐在会话之间发生更改,因此有人无法仅从日志文件中提取凭据。

另外,您还应该更改服务,以根据请求中指定的接受内容类型而不是请求动词来确定响应格式。

答案 1 :(得分:0)

获取请求存储在浏览器历史记录中。这就是为什么当你开始在地址栏中输入一个URL时,它可以自动完成。