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

标签 asp.net security asp-classic

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

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

最佳答案

如 ScottRFrost 所述,Request Validation默认情况下防止 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 直接读取的应用程序相关文件提供了一个方便的位置。您可以在经典 ASP 中手动执行此操作,但您需要将此目录存储在 Web 根目录之外,或者您需要设置本地文件夹权限,以便 IIS 用户无法读取这些文件。

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

关于asp.net - 为什么 ASP.NET 比 ASP Classic 更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12648698/

相关文章:

asp.net - 适用于 Amazon S3 的 .NET 库或 asp.net 应用程序

node.js - 在屏幕抓取应用程序中使用静态存储凭据的合理安全方法是什么?

unit-testing - .NET Core 2.0 用户 secret 和单元测试

Javascript转ASP经典函数用于移动设备检测

c# - 类/模型级别验证(相对于属性级别)? (ASP.NET MVC 2.0)

ASP.NET 通用提供程序

java - 选择 : Migrating from Classic ASP to . NET 或迁移到开源平台

asp-classic - 如何使用asp-classic上传文件

c# - 我缺少什么来使用嵌入式资源?

javascript - 我的 AJAX URL 安全吗?