代码之家  ›  专栏  ›  技术社区  ›  Albert

检测到一个潜在的危险请求。表单值:主动或事后处理这些错误

  •  0
  • Albert  · 技术社区  · 14 年前

    我在错误日志中越来越多地注意到这个错误。我已经通读了这里讨论这个错误的问题,但它们没有说明我想做什么(见下文)。

    我正在考虑三种选择,按优先顺序排列:

    1)提交表单时(如果有帮助,我几乎只使用formviews),如果检测到潜在的危险字符,则自动将其删除并提交。

    2)提交表单时,如果检测到潜在的危险字符,请提醒用户并让他们在重试之前修复。

    3)异常生成后,进行处理并提醒用户。

    我希望前两个选项中的一个可以在全球范围内做点什么……我知道第三个选项我必须改变我已经准备好的一大堆试捕块。可行,但劳动密集型。如果可能的话,我宁愿积极主动,避免所有的例外。

    也许1的一种方法是编写一个代码块,在insert/update事件期间循环遍历formview中的所有文本输入字段,并去掉字符。我同意这一点,但是我不想为了完成这一点而大量修改所有的插入/更新事件。或者我只是创建一个不同的类来执行文本检查/删除,并且在每个insert/update事件中只插入一行代码。如果有人能给出这些方法中任何一种的示例代码,那将是一种帮助。

    谢谢你的任何想法或信息。我当然也愿意接受其他的解决方案;这些只是我想到的3个。我可以说我不想关闭请求验证。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Ramesh César Landesa    14 年前

    我更喜欢2或3。在1中,您正在更改用户在不知情的情况下输入的内容。

    您可以继续并挂接以提交表单的事件,然后遍历可编辑字段并执行健全性检查。

    对于oprion 3,您可以重写page类的onerror方法,并可以提供指示问题的自定义错误消息。(也可以使用elmah或application_error事件)来处理这些错误。

    我建议您在进行验证时同时使用客户端和服务器端方法。

        2
  •  1
  •   Tom Tresansky    14 年前

    一个更简单的解决方案可能对很多情况都很有效:只允许文本框中包含字母数字字符。当然,这不会对你期望得到的任何大的文本块起作用,但对于更简单的事情,它就像一个符咒一样起作用。

    在表单提交时检查字段中是否存在非字母数字字符,并使用一些javascript抛出一个警报对话框,这非常简单。

    当然,在实际对提交的值执行任何操作之前,请在服务器上运行相同的检查。