如果缺少必需的查询字符串参数,并且让 global.asax 使用 Application_Error 捕获它,然后将用户转移到错误页面,那么让 ASP.NET 页面抛出(自定义错误)是否有任何问题?我有几个执行这些检查的基类,但我不确定向用户传达错误的最佳方式。
所以,像这样:
int reqParam;
if(!isParamSet("myReqParam", out reqParam))
{
throw new QuerystringParamMissingException();
}
然后由 global.asax 中的 Application_Error 捕获。
此外,从安全角度来看,我应该向用户提供多少信息?只是这是一个错误,或者缺少查询字符串参数,或者缺少哪个参数,甚至可能该参数指示的用途是什么?
最佳答案
这完全取决于错误的严重程度以及用户是否可以轻松地从错误中恢复。
一种观点是用户不应该能够进行无效调用 - 所有需要查询字符串的链接都应该在客户端进行验证,因此在网站正常运行期间,所有查询字符串都将是完整且有效的。因此,如果缺少参数,将是一个严重的错误,因此引发异常是一种完全有效的方法。
如果您想阻止人们修改查询字符串以访问他们不应该访问的系统部分,这将很有用。他们可能会错过某个参数,并且显示自定义错误页面可能不会为他们提供任何有关错误的线索。
不过,您应该记录错误 - 这样至少您知道什么时候错了以及错在哪里。
关于c# - 可以因缺少必需的查询字符串参数而引发错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865264/