不妥协的计算机上的Web应用程序容易受到XSS,CRSF,sql注入攻击和不安全的wifi环境中的cookie窃取的攻击。</ p>
为了防止出现这些安全问题,有以下补救措施
我现在无法接受基于网络的黑客攻击(正确实施时)?或者我是否在Web开发中遗漏了一些其他安全问题?(OS平台或其他软件中可能出现的漏洞除外)
答案 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 Encoding
,Javascript Encoding
,CSS Encoding
,Html Attribute Encoding
,Url Encoding
,...
每个都应该在适当的位置执行适当的内容 - 即只是做Html编码内容在所有情况下都不够。
最令人烦恼的是,在某些情况下你应该执行组合编码(即第一个JavascriptEncode然后是HtmlEncode ...... !!!)
看看以下链接,更熟悉一个叫做XSS的噩梦...... !!!