2

我读过几个地方说 ASP.NET 比 ASP Classic 更安全。但从未见过任何关于原因的实际论据。

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

4

3 回答 3

5

正如 ScottRFrost 所提到的,请求验证默认防止 XSS。就个人而言,我更愿意关闭它并开发一个应用程序来使用 insead 的输出清理(例如 HTML 编码输出到网页,或正确编码和转义 JavaScript 中使用的输出)。这种方法不会限制用户输入,因此不会像请求验证那样限制应用程序功能。例如,它将允许将 HTML 输入到将显示在网页上而不是由浏览器解释的字段中(想象一个不允许发布 HTML 的 HTML 开发人员论坛)。如果您在 ASP.NET 中使用此方法,您将使用与标准 ASP 开发非常相似的方法,即向页面输出变量。

为了回答您的观点,在身份验证期间(验证用户名/密码组合),经典 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 本质上比经典 ASP 更安全,除了新手开发人员不太可能在 ASP.NET 中创建 XSS 易受攻击的网站这一事实。

于 2012-10-01T09:44:07.370 回答
1

默认情况下, ASP.NET 包括限制某些常见脚本攻击的请求验证等功能。您可以在经典 ASP 中自己完成,但在 .NET 中是默认设置。

于 2012-09-28T23:53:04.417 回答
-1

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

于 2012-09-30T06:51:44.197 回答