您希望在初学者的ASP.NET安全手册中看到什么?

时间:2008-09-20 20:35:55

标签: asp.net security

这是我自己的书中无耻的信息收集练习。

我在社区中提出的一个演讲是对网站漏洞的介绍。通常在谈话中我可以看到至少有两名观众非常苍白;这是基本的东西,跨站点脚本,SQL注入,信息泄漏,跨站点表单请求等。

所以,如果你可以回想一个人,作为一个开始的Web开发人员(无论是否是ASP.NET),您认为有关Web安全性以及如何安全开发的有用信息是什么?我已经介绍了OWASP Top Ten

(是的,这意味着如果有人提出我还没有想到的东西,stackoverflow将会出现在确认列表中!)

现在一切都已完成,并已发布,感谢大家的回复

8 个答案:

答案 0 :(得分:6)

首先,我要指出网络的不安全性,使得人们可以访问这些人,对于那些以安全方式开发的人来说(不幸的是)可能是一个新概念。例如,向他们展示如何拦截HTTP标头并实施XSS攻击。你想向他们展示攻击的原因是他们自己更好地了解他们正在防御什么。谈论超出这个范围的安全性是很好的,但是如果不了解他们想要阻止的攻击类型,他们就很难准确地“测试”他们的系统以确保安全。一旦他们可以通过试图拦截消息,欺骗标题等来测试安全性,那么他们至少知道他们试图实现的安全性是否有效。您可以随心所欲地教他们实现安全性所需的任何方法,知道如果他们弄错了,他们实际上会知道它,因为它会使您向他们展示的安全测试失败。

答案 1 :(得分:1)

防御性编程作为一个涵盖所有特定攻击的典型主题,因为大多数(如果不是全部)攻击都是由于没有足够的防御性思维造成的。

将该主题作为本书的中心栏目。那时候对我有用的是知道永远不会信任任何东西的技巧,而不仅仅是一站式提示,例如“不要在输入中允许SQL注释或特殊字符”。

我之前想要学到的另一个有趣的事情是如何实际测试它们。

答案 2 :(得分:1)

我认为所有的漏洞都是基于没有思考的程序员,无论是暂时的失误判断,还是他们没有想到的东西。我负责“修复”的应用程序中的一个大漏洞是,当登录的用户是管理员时,他们从身份验证方法返回0(零)。由于变量最初初始化为0,如果发生任何问题,例如数据库关闭,导致它抛出异常。该变量永远不会被设置为正确的“安全代码”,然后用户将具有该站点的管理员访问权限。绝对可怕的想法进入了这个过程。所以,这带给我一个重要的安全概念;永远不要将表示“安全级别”的变量的初始值或任何类型的变量的初始值设置为表示站点的完全上帝控制的东西。更好的是,使用现有的库已经经历了长时间在大量生产环境中使用的火。

答案 3 :(得分:1)

我想看看ASP.NET安全性与ASP Classic安全性的区别。

答案 4 :(得分:0)

答案 5 :(得分:0)

很高兴听到您将获得OWASP前十名。为什么不包括对SANS / CWE Top 25编程错误的报道。

答案 6 :(得分:0)

我总是试图在可能出错的事情上展示最糟糕的情况。例如,跨站点脚本注入如何作为黑盒攻击工作,甚至可以在应用程序中的页面上工作,黑客无法访问自己,或者甚至SQL注入如何能够作为黑盒子工作{{3即使您的网站使用普通的非特权登录帐户连接到您的数据库,也是如此。

答案 7 :(得分:0)

如何确保您的安全方法可以使用SQL Server进行扩展。特别是如何避免让SQL Server序列化来自多个用户的请求,因为它们都使用相同的ID ...