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

Beh*_*ens 2 asp.net security asp-classic

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

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

Sil*_*Fox 5

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

为了回答您的观点,在身份验证(验证用户名/密码组合)期间,Classic ASP 和 ASP.NET 之间没有太大区别。ASP.NET 提供了一些可以放入页面的用户控件,并且还提供了成员身份提供程序模型,但本质上您必须为此实现逻辑。

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

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

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