Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 我是否应该捕获普通用户永远不会发生的错误?_Django_Security_Error Handling_Web - Fatal编程技术网

Django 我是否应该捕获普通用户永远不会发生的错误?

Django 我是否应该捕获普通用户永远不会发生的错误?,django,security,error-handling,web,Django,Security,Error Handling,Web,我有一行代码,我用.get(field=ID)获取数据库行。普通用户总是会发送数据库中存在的ID,但黑客可能不会,它会抛出DoesNotExist异常。在这种情况下,显式地捕获它是重要的还是应该让异常保持未捕获状态?无论哪种方式,黑客都不会看到任何消息,因此也不会有任何安全风险 我还想知道是否应该记录此异常失败。作为一般经验法则,我很想听听你们做了什么,以及你们记录/捕获什么与让什么抛出未捕获的异常的理由。重要的部分是你们在哪个上下文中使用这个字段。如果您通过/profile/[ID]访问该页面

我有一行代码,我用
.get(field=ID)
获取数据库行。普通用户总是会发送数据库中存在的
ID
,但黑客可能不会,它会抛出
DoesNotExist
异常。在这种情况下,显式地捕获它是重要的还是应该让异常保持未捕获状态?无论哪种方式,黑客都不会看到任何消息,因此也不会有任何安全风险


我还想知道是否应该记录此异常失败。作为一般经验法则,我很想听听你们做了什么,以及你们记录/捕获什么与让什么抛出未捕获的异常的理由。

重要的部分是你们在哪个上下文中使用这个字段。如果您通过
/profile/[ID]
访问该页面,我将显示一个未找到用户的页面。如果你做那样的事

ID = context["user"].id
Object.get(field = ID)
我不会试图单独抓住错误

总而言之,我保存了所有不能通过正常用户行为引起的错误。然后,我可以查看我的错误日志,直接查看我的站点在哪里出现故障,或者黑客是否试图找到安全漏洞


之后,我修复了这个未定义的行为,使错误日志尽可能为空。

我同意。这取决于内容。如果此查询存在于直接连接到用户导航或输入的视图中,则应处理错误值并返回响应。但是,如果查询位于模型层,并且用户没有直接访问它的权限,那么您就不会有问题。底线是过滤和处理所有用户输入。这包括GET和POST参数上下文是一个模态/ajax弹出窗口。根据你们两位所说的,我决定在本例中捕获
DoesNotExist
异常,并在用户试图向模式对话传递数据库中不存在的ID时返回相应的错误消息。