我理解为什么异常“”潜在危险的Request.Form值...“出现以及为什么它有用。我想在我的页面上放置客户端验证器,检查输入是否包含<> ON =或其他什么都可以触发这个异常。问题是,我不知道触发异常的所有字符或字符串。是否有一些触发器的列表在哪里?我似乎无法找到它,只有问题/答案相关异常本身以及如何处理它。
此外,如果请求来自外部来源,而不是我的表格,我该如何判断以及如何处理? Asp.NET会自动执行此操作吗?一个隐藏的领域是否会起作用或者黑客可以解决这个问题吗?
您可以提供您可以提供的信息(包括链接)。
更新:
对于任何有兴趣的人,我想出了一个正则表达式,它将匹配任何带有这些字符的字符串。
(^((?=.*&#).*)$)|(^((?=.*<).*)$)|(^((?=.*>).*)$)
但是,当您提交表单时,即使单独的验证组中的字段也不会被单击,也会传递给服务器,如果这些字段中包含任何无效文本,则会出现异常。所以,我决定使用Ajax FilteredTextBoxExtender来阻止来自TextBoxes的那些字符。另一种方法是在所有TextBox上使用JavaScript keyup函数。但是,智能用户可以禁用这两者的JavaScript,但它们并不完全可靠。
答案 0 :(得分:2)
看起来这是此网站上类似问题的副本。 This question有几个答案,人们通过代码反映了实际的触发器。
在回答您的其他问题时,如果来自某个您未明确验证的请求的无效输入(例如另一个站点),它将在您的代码的服务器端点击ValidateRequest,并且调用者将看到500错误或您的自定义错误页面(如果已启用)。假设您允许来自其他服务器的请求(请阅读CSRF)。如果您不想允许来自其他服务器的请求,您可以检查请求的引用者,并仅允许来自您自己站点的请求。