Intranet开发人员制作面向公众的网站的安全注意事项

时间:2009-05-06 21:53:18

标签: jquery asp.net-mvc security subsonic

我在编写内部Intranet应用程序方面有很多经验,但在编写面向公众的Web应用程序时,很少有人会尝试恶意攻击。

该应用程序是用MVC.net,JQuery和Subsonic编写的。

我可以采取哪些步骤来投射我的应用程序,使其合理预测?

我已经做了一些事情:

  • 服务器端和客户端的表单验证
  • 执行密码复杂性
  • 签入控制器当前用户可以执行操作的操作。

对于查看我的表单的html源并查看表单发布内容的人,并且使用此手动创建具有不同值的表单帖子来执行操作时,他们一直非常偏执。这个偏执狂是否有充分根据我需要在使用HttpVerb GET和POST归属的动作上执行此操作还是只需要GET?

我是否需要担心使用ORM进行SQL注入?

7 个答案:

答案 0 :(得分:3)

检查所有控制器操作的授权,包括GET和POST。不是为会话授权,而是再次为每个请求授权。

服务器验证是必须的。还在数据库级别上强制执行一些数据完整性。一旦发现某些异常情况就会失败。不要试图恢复和处理所有可能的场景以取悦用户。

不要依赖用户识别,例如存储在Cookie中的用户名。它可以被替换。添加更多和独特的东西。 Cookie也可能被盗并转移到另一台PC。考虑选择检查IP地址(例如)以确保您不被欺骗。

限制每个时间单位的用户操作量。不允许在一分钟内提交100个。

所有用户输入都必须进行清理。是的,担心SQL注入。

不要以纯文本格式存储密码。哈希他们。如果有人闯入您的系统,他们可以通过假设用户使用相同的密码来访问他的电子邮件帐户,银行系统等来滥用密码。

另一个好主意可能是不使用公开昵称,电子邮件或公开的其他名称作为登录名。允许用户使用登录名执行登录操作,并使用其他名称在网站上公开表示。

实际上,看看这个帖子。它对这种知识有很好的总结。

What should a developer know before building a public web site?

答案 1 :(得分:1)

  • 在几次失败之后锁定帐户(30分钟)以防止暴力破坏。
  • 将SSL视为注册和登录页面的选项。
  • 用户类的IsInRole函数是管理用户操作安全性的简便方法。
  • 将令牌用于任何“记住我”功能。确保此令牌的生成是加密安全的。
  • 仅使用参数化查询,以防止注入。
  • 加密Cookie。
  • Microsoft Anti-XSS
  • 偏执狂。

有很多考虑因素。与往常一样,这将是一项正在进行的工作。

答案 2 :(得分:1)

建立面向公众的网站时,偏执狂是你的朋友。

您的Cookie是否已加密?通过自定义HttpModule很容易实现。这是普通SSL的基础。

是的,你需要担心sql注入。并非所有ORM都是平等的。我们最近在LINQ的某些条件下发现了sql注入问题。不要相信任何为您编写查询的内容。

如果这涉及敏感信息,请添加代码以防止重播攻击。基本上,假设某人离开您的服务器将被捕获。

答案 3 :(得分:0)

  • 将所有用户输入视为将破坏您的服务器(XSS)
  • 来自/来自数据库的所有信息都是恶魔,必须被清除(SQL注入)
  • 如果你不小心的话,饼干怪物会得到你。
  • 编程,就好像Javascript已关闭,但为拥有该功能的用户提供功能

答案 4 :(得分:0)

有关Web应用程序漏洞的详尽目录,最重要的解决方案以及帮助编写更安全代码的开发实践,请查看OWASPCLASP.

答案 5 :(得分:0)

  • 清理客户端发送的任何输入 您。 POST / GET数据可能是 最容易伪造,但绝对是 不是全部。

  • 不要单独依赖JavaScript 任何安全措施,因为可以 就像被轻易绕过一样。

  • 确保您拥有安全的政策 用于密码恢复(例如,不是 只是一个“秘密问题”)

  • 有某种蛮力保护,例如CAPTCHA

答案 6 :(得分:0)

您对安全性有多严重?

出于安全考虑,存在RFC标准。

http://www.faqs.org/rfcs/rfc3552.html

贯穿它(42页或那里)。它包含大多数安全注意事项在创建新RFC时,您将使用本文档指导您完成注意事项。