我制作了一个WCF REST服务,它使用来自OLAP数据库的数据而不是Microsoft技术,最终,我想将许多其他OLAP数据库连接到一个平台。
经过大量阅读后,WCF REST的安全性非常令人沮丧,总之,我有2个选择,一个是使用基本身份验证,通过网络公开用户名和密码,或者可能更好一点,使用使用SSL进行基本身份验证,现在我需要从Web服务器获取不同的证书。或者使用摘要式身份验证,它使用加密的密码并对数据库进行身份验证,这是最好的选择,但在我的情况下,这是不可能的,因为我没有使用Microsoft技术,安全性在不同的平台上,我无法加密我的密码使用MD5,因为数据库无法读取加密密码。
结论我只能使用基本身份验证和SSL,但这是正确的做法吗?我看到很多产品在做类似于我的工作,当他们登录时,我没有看到https,但只有http,他们不安全且容易入侵吗?
我不打算制作一个防弹网站,但是一个简单的网站,使用基本身份验证太简单了,或者实际上它几乎就像放弃密码一样,但是使用https,是不是太过分了?
因此,在REST令人沮丧之后,让我们不使用REST,使用正常的WCF,从我读过的内容来看,它们会遇到同样的问题。
请给我一些指导。我想我已经输了。
非常感谢
PlayKid
答案 0 :(得分:1)
通常,基本身份验证用于常规网站,是的,如果与http一起使用,用户名和密码通常会超出可读行。 Https已经更好了,因为信息是通过线路加密发送的。但实际上,您只能在商业或银行应用程序中看到这一点。你不能使用MD5,这是一个可怜的,因为这将是一种中间路线。
因此,根据您将公开的应用程序,使用http表示简单或https,更复杂和安全。
顺便说一下,大的安全问题通常与SQL注入有关,或者黑客能够在您的网站上获得一些管理级权限。通过这种方式,他们可以获得大量信息,如果您采取所需的预防措施和对策措施,那么嗅探您的线路并获得单个用户密码组合相对无害。
答案 1 :(得分:0)
基本上,使用SSL的基本身份验证确实非常安全,并且如果它将暴露给外部世界,则应该使用它。
我之前见过的最简单的黑客攻击方法,如果您只想验证(不授权端点)已知客户端使用的客户端:
OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name
这将提供访问该服务的用户名,如果有效用户正在访问该服务,则使用LDAP向您的数据库或AD使用LDAP验证此用户,并且每个请求都添加用户需要作为请求的一部分发送的加密密钥。这样您就可以知道请求中的用户名和加密密钥。
您也可以将此功能与基本身份验证结合使用,以确保其不安全。