在asp.net中处理危险字符的最佳做法是什么

本文关键字:最佳 是什么 字符 危险 asp net 处理 | 更新日期: 2023-09-27 18:27:06

在asp.net中处理危险字符的最佳实践是什么?参见示例:asp.net注册表单

你应该:

  1. 使用JavaScript阻止他们将其输入到第一位的文本框中
  2. 是否具有在服务器端查找和替换的通用功能

#1的问题是它会增加页面加载时间。

在asp.net中处理危险字符的最佳做法是什么

ASP.NET为您处理潜在的危险字符,默认情况下,自ASP.NET 2.0以来。来自ASP.NET中的请求验证:

请求验证是ASP.NET中的一项功能,用于检查HTTP请求并确定它是否包含潜在危险所容纳之物在这种情况下,潜在的危险内容是任何HTML正文、标头、查询字符串中的标记或JavaScript代码,或请求的cookie。ASP.NET执行此检查是因为标记或URL查询字符串、cookie或发布的表单值中的代码可能已出于恶意目的添加。

请求验证有助于防止此类攻击。如果ASP.NET检测到请求中的任何标记或代码,就会抛出"潜在检测到危险值"错误并停止页面处理。

也许其中最重要的一点是它发生在服务器上;无论客户端访问你的应用程序,他们都不能只使用JavaScript来解决它。

解决方案1不会使加载时间增加太多。

您应该始终使用第二个解决方案和第一个解决方案,因为用户可以在浏览器中关闭javascript。

您接受它们就像写入端的常规字符一样。渲染时,对输出进行编码。不管安全性如何,你都必须对它进行编码,这样你才能显示特殊字符。

在asp.net中处理危险字符的最佳做法是什么?

我没有看你链接到的屏幕截图(问题应该是独立的),但没有危险的角色。这完全取决于上下文。以Stack Overflow为例,它允许我输入字符Dangerous!'); DROP TABLE Questions--。那里没有什么危险。

ASP.NET本身将尽最大努力防止HTTP级别的恶意输入:它不会允许任何用户访问web.config等文件或web根目录之外的文件。

只要开始使用用户输入执行某些操作,就由您决定了。没有灵丹妙药,没有一条规则适合所有人。如果要将用户输入显示为HTML,则必须确保只允许使用无害的标记,而不允许使用任何可编写脚本的属性。如果您允许用户上传图像,请确保只上传图像。如果要将输入发送到RDBMS,请确保转义对数据库操作语言有意义的字符。

等等。

始终验证服务器上的输入,这甚至不应该是一个讨论,只需执行即可!

客户端验证对用户来说只是一种养眼的东西,但服务器才是最重要的!

认为

自ASP.NET2.0以来,默认情况下,ASP.NET为您处理潜在的危险字符。来自ASP.NET中的请求验证:

就像认为一扇坚固的门能把小偷挡在门外。不会的。这只会让他慢下来。你必须知道什么是最常见的矢量,什么是可能的解决方案。您必须理解,在HTML/CSSS/Javascript中编写的每个everyevery变量(字段/属性)都是潜在的攻击向量,必须对其进行净化(通过使用适当的库,如较新的MVC.NET中包含的某些方法,或至少ASP.NET 4.0的<%: %>),没有例外,您执行的每个everyevery查询都是一个潜在的附加向量,必须通过专门使用ORM和参数化查询来清除,没有例外。数据库中不得保存任何密码。还有很多其他类似的事情。这不是很难,但懒惰、自满和无知会让它变得更难(如果不是几乎不可能的话)。如果不是你会引入,那么是你左边的程序员,或者是你右边的程序员。没有希望了。