从安全角度来看,可以从ajax调用中写出错误吗?

From a security perspective is ok to write out the error from a ajax call?

提问人:Martin Cooke 提问时间:9/24/2022 更新时间:9/24/2022 访问量:37

问:

我的 ajax 调用通常是这样的:

$.ajax({
                    type: 'POST',
                    url: '/Controller/GoDoWhatever',
                    contentType: 'application/json;',
                    data: JSON.stringify(obj),
                    success: function (data) {
                        // all good
                    },
                    error: function (error) {
                        console.log(error);
                    }
                });

我想知道的是,当我们遇到错误时,可以或不可以处理错误?一旦代码上线,控制台 .log 只对开发人员真正 imo 有用。但是,是否可以从错误中带回潜在的个人数据,例如我是否以不安全的方式编写了控制器。如果错误有可能给恶意用户带来优势,那么我应该怎么做,根本不是控制台 .log 或完全删除错误功能?希望我已经正确解释了这一点,提前感谢:)

JavaScript jQuery AJAX 安全 错误处理

评论

0赞 Barmar 9/24/2022
用户可以使用 DevTools 访问发送到浏览器的任何内容。显式记录它不会带来任何安全隐患,只是他们可以更容易地看到它。
0赞 user3252327 9/24/2022
无论如何,错误都会出现在网络和响应对象中。后端决定是否在错误响应中返回敏感数据

答:

1赞 Angshu31 9/24/2022 #1

无论如何,用户都可以通过 devtools 访问它。无论您是否控制台.log它都无关紧要。

确保服务器发送安全的错误消息,然后你对它所做的任何事情都是安全的。

公共 API 显然应该有安全消息,并且您应该处理自己服务器中所有 API 路由的错误(并将安全错误发送回客户端)。

评论

0赞 Martin Cooke 9/24/2022
如果我删除“error:...”,是否可以从 devtools 中检索错误。方面?
0赞 Angshu31 9/24/2022
@MartinCooke 是的。客户端代码有权访问的任何内容,用户都可以通过 devtools 访问。即使你不说它#s错误
0赞 Martin Cooke 9/24/2022
啊,好吧,所以我很可能会把它留在里面,它更重要(通过声音)控制器没有返回我不想返回的数据,即带有 PI 数据的错误消息,非常感谢您的回复:)
0赞 Angshu31 9/24/2022
是的,我很高兴你明白