我是一个服务器端编程的新手,所以请原谅我,如果这变得凌乱。我已签约创建一个Web服务,以允许经过身份验证的用户访问数据库。用户必须输入登录名和密码。一直在阅读和阅读关于REST vs SOAP的内容,当我遇到这个陈述时,我想我已经解决了一个RESTful设计:“需要安全的数据不应该作为URI中的参数发送。”这似乎是对RESTful方法的一大缺点。我知道,使用https密码将被加密以防止中间人进行拦截,但这会使服务器日志和客户端历史记录成为可能的暴露点。有没有一个RESTful的解决方案,这个问题,还是我需要去SOAPY?任何建议赞赏。如何在REST风格的Web服务URI中保护密码参数?
回答
使用POST
类型的请求来传输必要的数据,并将敏感部分包含为发布字段,以便它是请求主体的一部分而不是URI中的参数。
我不知道这有什么帮助。你能详细说明一下吗? POST不会通过URI传递数据,但它仍然会被传递。 HTTPS负责端到端的数据加密,但如果以纯文本格式存储密码,则不会有太大的作用。 – Krisc 2010-04-26 17:16:44
OP的问题涉及数据的传输,而不是将其存储在服务器上。不在URI中传递安全数据的主要原因是,URI通常由您的个人应用程序以外的事物记录,比如Web服务器请求日志和浏览器历史记录。相比之下,这些日志和历史记录通常不记录POST字段。 – Amber 2010-04-26 17:32:34
如果你确实需要登录POST字段,你可以[加密日志文件](http://stackoverflow.com/questions/629755/creating-an-encrypted-log-file) – 2011-12-01 02:25:53
这是配置您的Web服务器而不是您的应用程序的问题。错误配置会导致漏洞,这就是一个很好的例子。 Web服务器也可以记录POST请求,如果您的Web应用程序防火墙检测到攻击,这很常见。我会确保在apache中关闭日志记录功能,因为这可能不是您的应用程序正常运行所必需的。
另一个更常见的方法是使用cookie来维护会话。 Cookie仍然需要使用https保护其整个生命。
我认为,要真正RESTful,您应该使用HTTP身份验证(基本或摘要),因为被迫首先登录不符合REST的精神。但是,我希望这可以由知道REST的人确认(或驳斥)。
- 1. 如何保护REST风格的Web服务(PROVIDER)
- 2. 密码保护Web服务
- 3. 如何响应REST风格的Web服务中的备用URI
- 4. 保护REST风格的web服务(Jersey on Tomcat)
- 5. CakePHP中的REST风格的Web服务
- 6. REST风格的Web服务:处理无效的URI - 404错误
- 7. 用于REST风格的Web服务的URI
- 8. 如何在REST风格的Web服务中描述输入参数
- 9. 如何在Lotus Notes中使用REST风格的Web服务
- 10. 在REST风格的Web服务中公开服务
- 11. 关于REST风格的Web服务
- 12. ASP.NET REST风格的Web服务
- 13. REST风格的Web服务GET文件
- 14. GWT + Spring MVC(REST风格的Web服务)
- 15. jquery REST风格的Web服务
- 16. REST风格的web服务代理类
- 17. 什么是REST风格的Web服务
- 18. 如何在.net中保护web服务?
- 19. C#代码中的REST风格的Web服务
- 20. 如何使用XMLHttpRequest将参数从javascript传递到REST风格的Web服务
- 21. 如何使用可变参数测试REST风格的服务?
- 22. 如何保护JAX-RS在WildFly 9 REST Web服务与JAAS?
- 23. REST风格 - 重设密码
- 24. 保护Web服务
- 25. 保护Web服务
- 26. 保护Web服务
- 27. 如何使用spring3保护服务REST?
- 28. 如何在WCF Rest服务中保留用户名和密码
- 29. REST服务URI参数类型
- 30. 如何使用Meteor公开REST风格的Web服务
你为什么要通过URI传递密码,这明显是未加密的纯文本?如果是这种情况,那么为什么即使打扰密码呢? – 2010-04-26 18:56:54
就像我说的,我是一个新手。在研究Web服务和REST vs SOAP时,似乎正在出现的共识是REST更简单,适用于大多数场景。在试图确定什么属于“大多数情况下”,什么不是,我认为我发现了与认证异常;即在RESTful设计中,所有内容都通过URI或标头传递,这两者都是脆弱的。所以我只是想知道这是否属实,或者是否有安全和RESTful的方式来使用用户名和密码进行身份验证。 – adam 2010-04-28 16:28:19