我读过几个地方说 ASP.NET 比 ASP Classic 更安全。但从未见过任何关于原因的实际论据。
以标准登录系统为例。用户通过表单向服务器发送用户名和密码。这在两种语言中都是以相同的方式完成的。在这两种语言中,其余的都是在服务器上完成的。为什么在这里选择 ASP.NET 而不是 ASP Classic?
我读过几个地方说 ASP.NET 比 ASP Classic 更安全。但从未见过任何关于原因的实际论据。
以标准登录系统为例。用户通过表单向服务器发送用户名和密码。这在两种语言中都是以相同的方式完成的。在这两种语言中,其余的都是在服务器上完成的。为什么在这里选择 ASP.NET 而不是 ASP Classic?
正如 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 易受攻击的网站这一事实。
默认情况下, ASP.NET 包括限制某些常见脚本攻击的请求验证等功能。您可以在经典 ASP 中自己完成,但在 .NET 中是默认设置。
可能存在安全问题。但我担心一件事。它是关于 SQL 注入的。Asp.net 提供了参数化查询和 HTML 编码解码技术的设施。有关更多信息,请单击链接 ASP.net 安全性