构建面向公众的网站时,偏执狂是你的朋友。
你的cookie是加密的吗?通过自定义HttpModule很容易实现。这是普通SSL的基础。
是的,你需要担心sql注入。并非所有ORM都是平等的。我们最近在LINQ的某些条件下发现了sql注入问题。不要相信任何为您编写查询的内容。
如果这涉及敏感信息,请添加代码以防止重放攻击。基本上,假设某人离开您的服务器将被捕获。
您对安全性有多严重?
出于安全考虑,存在RFC标准。
http://www.faqs.org/rfcs/rfc3552.html
贯穿它(42页或那里)。它包含大多数安全注意事项创建新RFC时,您将使用此文档指导您完成注意事项。
清理客户端发送的任何输入 您。 POST / GET数据可能是 最容易伪造,但绝对是 不是全部。
不要单独依赖JavaScript 任何安全措施,因为可以 就像被绕过一样容易。
确保您有安全的政策 用于密码恢复(例如,不是 只是一个“秘密问题”)
有某种蛮力保护,例如CAPTCHA
有很多考虑因素。与往常一样,这将是一项正在进行中的工作。
有关Web应用程序漏洞的详尽目录,最重要的解决方案以及帮助编写更安全代码的开发实践,请查看 OWASP 和 扣。
检查所有控制器操作的授权,包括GET和POST。不是为会话授权,而是为每个请求再次授权。
服务器验证是必须的。还在数据库级别上强制执行一些数据完整性。一旦发现某些异常情况就会失败。不要试图恢复和处理所有可能的场景以取悦用户。
不要依赖用户标识,例如存储在cookie中的用户名。它可以被替换。添加更多和独特的东西。 Cookie也可能被盗并转移到另一台PC。考虑选择检查IP地址(例如)以确保您不被欺骗。
限制每个时间单位的用户操作量。不允许在一分钟内提交100个提交。
所有用户输入都必须进行清理。是的,担心SQL注入。
不要以纯文本格式存储密码。哈希他们。如果有人闯入您的系统,他们可以通过假设用户拥有相同的密码来访问他的电子邮件帐户,银行系统等来滥用密码。
另一个好主意可能是不使用公共昵称,电子邮件或公开的其他名称作为登录名。允许用户使用登录名执行登录操作,并使用其他名称在网站上公开表示。
实际上,看看这个帖子。它对这种知识有一个很好的总结。
开发人员应该知道什么 之前 建立一个公共网站?