HTTP GET与REST Web服务的安全隐患

时间:2011-12-14 18:01:21

标签: c# wcf security rest http-get

我使用的方法非常类似于实现Api Key方法来识别哪些客户端使用Web服务: http://blogs.msdn.com/b/rjacobs/archive/2010/06/14/how-to-do-api-key-verification-for-rest-services-in-net-4.aspx

我的问题是关于安全......该服务是由第三方公司进行的一些安全测试。他们的一个“低风险”评论(即不需要立即关注的评论)是参数作为httpget传递。该服务纯粹用于检索信息。但是,apikey在查询字符串中...例如URL可能是

https://url.com/companies?company_name=searchforthiscompany&address=paris&apikey=a-long-guid

“含义: 当参数作为HTTP Get请求的一部分传递时,它们更有可能 存储在中间或其他服务器日志文件中。一个好奇的用户可能会看到 敏感信息,如APIKey。

建议: 如果可能,参数应作为HTTP POST正文的一部分传递。“

这应该是我需要担心的事情吗?!很高兴能够将URL重新打入浏览器并获取结果。在这种情况下,您是否会更改所有方法以使用POST?

任何洞察力

2 个答案:

答案 0 :(得分:1)

由于您的请求超过了https,因此无需中间人就可以记录完整的uri,只记录域,因为建立了安全隧道并且所有交换都是通过此完成的。

答案 1 :(得分:1)

这一切都取决于您需要您的服务的安全性。如果安全性不是一个相关的问题,那么一定要使用GET。许多公共REST Web服务是使用直接在url中传递的api_key实现的。想到的一个例子是用于检索照片的flickr服务:

http://api.flickr.com/services/rest?method=flickr.photos.search&lat=41.20&lon=12.10&radius=10&api_key=e61cfc16c8633091c57557146d169874