是否担心XSS,CSRF,SQL注入,cookie窃取足以覆盖网络安全?

时间:2011-04-25 15:17:32

标签: security cookies xss sql-injection csrf

不妥协的计算机上的Web应用程序容易受到XSS,CRSF,sql注入攻击和不安全的wifi环境中的cookie窃取的攻击。<​​/ p>

为了防止出现这些安全问题,有以下补救措施

  • sql注入:一个好的数据映射器(比如linq-to-sql)没有sql注入的风险(我真的相信这个吗?)
  • CSRF:使用&lt;%:Html.AntiForgeryToken()%&gt;验证每个表单帖子(这是asp.net mvc环境中的一个令牌,存储在cookie中并在服务器上验证)
  • XSS:允许发布html的每个表单都被转换,只允许bb代码,其余的都是编码的。所有可能的保存操作都是通过post事件完成的,因此流氓img标签应该没有效果
  • cookie窃取:https

我现在无法接受基于网络的黑客攻击(正确实施时)?或者我是否在Web开发中遗漏了一些其他安全问题?(OS平台或其他软件中可能出现的漏洞除外)

5 个答案:

答案 0 :(得分:4)

简单的答案是“不,你不是无懈可击的 - 没有人!”

这是一个良好的开端,但您还可以做其他一些事情。您未提及的主要问题是针对白名单验证不受信任的数据,这很重要,因为它跨越多个漏洞,例如SQLi和XSS。请查看OWASP Top 10 for .NET developers part 1: Injection,特别是“所有输入必须针对可接受的值范围的白名单进行验证”一节。

接下来,您应该将最小权限原则应用于连接到SQL Server的帐户。请参阅上一个链接中此名称下的标题。

鉴于您正在使用ASP.NET,请确保请求验证保持打开状态,如果您绝对需要禁用它,请在页面级别执行此操作。有关详情,请参阅Request Validation, DotNetNuke and design utopia

对于输出编码,主要是确保您为正确的上下文编码。 HTML编码!= JavaScript编码!= CSS编码。有关详情,请参阅OWASP Top 10 for .NET developers part 2: Cross-Site Scripting (XSS)

对于cookie,仅限HTTP,如果可能,只允许安全地提供它们(如果您乐意只运行HTTPS)。尝试将你的web.config放到web.config security analyser,这将有助于指明你正确的方向。

另一个CSRF防御 - 虽然具有可用性影响 - 是CAPTCHA。显然你想要谨慎使用它,但是如果你有任何你想要保护的关键功能,那么它就会非常迅速地停止。更多信息OWASP Top 10 for .NET developers part 5: Cross-Site Request Forgery (CSRF)

除此之外,听起来你知道很多重要的原则。它不会让你无懈可击,但它是一个好的开始。

答案 1 :(得分:0)

This是网络攻击的权威指南。另外,我建议您对您的网络应用使用Metasploit

答案 2 :(得分:0)

  

我现在无法接受基于网络的黑客攻击吗?

因为,无论你有多好,每个人都会犯错误,答案是肯定的。你几乎肯定忘了清理一些输入,或使用一些防伪标记。如果您现在还没有,那么您或其他开发人员将随着您的应用程序变得更大。

这是我们使用框架的原因之一 - 例如,MVC将自动生成反CSRF令牌,而LINQ-to-SQL(如您所述)将清理数据库的输入。所以,如果你还没有使用一个使反XSS和反CSRF测量默认的框架,你现在就应该开始。


当然,这些可以保护您免受这些特定威胁的攻击,但永远可能无法抵御所有威胁。例如,如果您有一个不安全的SQL连接密码,那么有人可能会破坏您的数据库密码并获得访问权限。如果你没有保持你的.Net / SQL-Server /版本的最新版本,你可能成为在线蠕虫的受害者(即使你这样做,它仍然可能是零日)

甚至在软件中也无法解决问题:脚本小子可以DDOS您的网站。你的服务器公司可能会破产。一个阴暗的竞争对手可以简单地把对冲剪刀带到你的网络线。你的仓库可能会烧毁。开发人员可以将源代码出售给俄罗斯的公司。


关键是,你再也无法抵御一切 - 你只能抵御特定的威胁。

答案 3 :(得分:0)

绝对不够!在开发Web应用程序时,您还必须牢记其他几个安全问题。 要获得概述,您可以使用OWASP Top-Ten

我认为在考虑网络安全时,这是一篇非常有趣的帖子:What should a developer know before building a public web site? 有一个关于安全性的部分包含了开发Web应用程序时遇到的大多数威胁的良好链接。

在考虑安全性时要记住的最重要的事情是: 绝不相信用户输入!

[我正在回答这个“旧”问题,因为我认为它总是一个真实的主题。]

答案 4 :(得分:0)

关于你没有提到的内容:

您错过了MVC框架中的危险攻击:Over Posting Attack

您还错过了最令人讨厌的威胁:Denial of Service

你也应该对file uploads(如果有的话......)以及更多......

给予足够的重视

关于您提到的内容:

XSS真的非常浪费,而且更加烦人。有几种类型的编码,包括Html EncodingJavascript EncodingCSS EncodingHtml Attribute EncodingUrl Encoding,...

每个都应该在适当的位置执行适当的内容 - 即只是做Html编码内容在所有情况下都不够。

最令人烦恼的是,在某些情况下你应该执行组合编码(即第一个JavascriptEncode然后是HtmlEncode ...... !!!)

看看以下链接,更熟悉一个叫做XSS的噩梦...... !!!

XSS Filter Evasion Cheat Sheet - OWASP