Facebook과 Netflix와 같은 몇몇 거대 회사는 사용자가 콘솔에서 JavaScript 명령을 실행하는 것을 금지하기로 결정했습니다.
이는 원래 JavaScript 콘솔을 통해 특정 명령을 실행하여 악의적인 사용자가 메시지를 유포하는 것(모든 Facebook 사용자에게 대량의 스팸을 보내는 것)을 방지하기 위해 Facebook에서 시작되었습니다.
물론 이것은 많은 비난을 불러일으켰지만 제가 참여하기 전에 그들이 사용한 코드는 다음과 같았습니다.
다음과 같이 코드 코드를 복사합니다.
// Netflix가 Facebook의 선례를 따르고 있는 것 같습니다[https://news.ycombinator.com/item?id=7222129].
(기능() {
노력하다 {
var $_console$$ = 콘솔;
Object.defineProperty(창, "콘솔", {
가져오기: 함수() {
if ($_console$$._commandLineAPI)
throw "죄송합니다. 사용자 안전을 위해 이 웹사이트에서는 콘솔 스크립트 기능이 비활성화되었습니다.";
$_console$$ 반환
},
설정: 함수($val$$) {
$_console$$ = $val$$
}
})
} 잡기 ($ignore$$) {
}
})();
저는 말투가 부드러운 사람이지만 실제로는 이러한 관행이 합법적이라고 생각합니다. 그들의 관점에서는 콘솔을 일시적으로 비활성화하는 것이 문제를 방지하는 데 도움이 된다면 이를 수행해야 합니다.
그러나 장기적으로 볼 때 이는 실제로 좋은 생각이 아닙니다. 목표는 단순히 해당 서비스에 의존하는 사용자를 차단하는 것일 수 있습니다.
어쨌든 콘솔이 스크립트를 실행하는 것을 방지하려면 이 코드가 좋아 보이고 실제로 그렇습니다.