为什么ASP.NET比ASP Classic更安全?

时间:2012-09-28 23:50:33

标签: asp.net security asp-classic

我读过ASP.NET比ASP Classic更安全的几个地方。但从未见过为什么会有任何实际的争论。

使用标准登录系统作为示例。 用户通过表单向服务器发送用户名和密码。在两种语言中都以相同的方式完成。在两种语言中,其余的都是在服务器上完成的。 为什么选择ASP.NET而不是ASP Classic?

3 个答案:

答案 0 :(得分:4)

如ScottRFrost所述,Request Validation可以防止XSS作为默认值。就个人而言,我更愿意关闭它并开发一个应用程序来使用输出消毒内容(例如HTML编码输出到网页,或正确编码和转义JavaScript中使用的输出)。此方法不限制用户输入,因此它不会以请求验证的方式限制应用程序功能。例如它将允许将HTML输入到一个字段中,该字段将显示在网页上而不是由浏览器解释(想象一下HTML开发者论坛不允许发布HTML)。如果在ASP.NET中使用此方法,则可以根据页面的变量输出使用与标准ASP开发非常相似的方法。

要回答您的观点,在身份验证(验证用户名/密码组合)期间,Classic ASP和ASP.NET之间没有太大区别。 ASP.NET提供了一些可以放入页面的用户控件,并提供了Membership Provider模型,但实质上你必须以这种方式实现逻辑。

ASP.NET还包含作为标准的授权标准,因此可以限制从web.config文件中的设置访问整个应用程序或某些URL路径。这可以防止开发人员忘记每页包含授权检查。仍然需要在ASP.NET中手动处理任何更细粒度的访问检查。

ASP.NET还提供了无法通过Web服务器读取的/ App_Data等专用文件夹。这为存储不应通过HTTP直接读取的应用程序相关文件提供了方便的位置。您可以在Classic ASP中手动执行此操作,但是您需要将此目录存储在Web根目录之外,或者您需要设置本地文件夹权限,以便IIS用户无法读取这些文件。

总而言之,我不会说ASP.NET本质上比Classic ASP更安全,除了新手开发人员不太可能在ASP.NET中创建一个XSS易受攻击的网站。

答案 1 :(得分:1)

ASP.NET默认包含Request Validation等功能,可以限制一些常见的脚本攻击。您可以在经典ASP中自己完成,但在.NET中它是默认的。

答案 2 :(得分:-1)

可能存在安全问题。但我担心一件事。它是关于SQL注入的。 Asp.net提供了参数化查询和HTML编码解码技术。有关更多信息,请点击链接ASP.net security