บริษัทยักษ์ใหญ่หลายแห่ง เช่น Facebook และ Netflix ตัดสินใจห้ามผู้ใช้รันคำสั่ง JavaScript ในคอนโซล
สิ่งนี้เริ่มต้นโดย Facebook เพื่อป้องกันไม่ให้ผู้ใช้ที่เป็นอันตรายแพร่กระจายข้อความ (ส่งสแปมจำนวนมากไปยังผู้ใช้ Facebook ทั้งหมด) โดยดำเนินการคำสั่งเฉพาะผ่านคอนโซล JavaScript
แน่นอนว่าสิ่งนี้มีข้อบกพร่องมากมาย แต่ก่อนที่ฉันจะเข้าไปมีส่วนร่วม โค้ดที่พวกเขาใช้มีลักษณะดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
// ดูเหมือน Netflix กำลังตามรอย Facebook [https://news.ycombinator.com/item?id=7222129]
(การทำงาน() {
พยายาม {
var $_console$$ = คอนโซล;
Object.defineProperty (หน้าต่าง "คอนโซล", {
ได้รับ: ฟังก์ชั่น () {
ถ้า ($_console$$._commandLineAPI)
โยน "ขออภัย เพื่อความปลอดภัยของผู้ใช้ ฟังก์ชั่นสคริปต์คอนโซลถูกปิดใช้งานบนเว็บไซต์นี้";
ส่งคืน $_console$$
-
ชุด: ฟังก์ชั่น ($val$$) {
$_console$$ = $val$$
-
-
} จับ ($ละเลย$$) {
-
-
แม้ว่าฉันจะเป็นคนพูดจานุ่มนวล แต่จริงๆ แล้วฉันคิดว่าการปฏิบัตินี้ถูกกฎหมาย จากมุมมองของพวกเขา หากการปิดใช้งานคอนโซลชั่วคราวช่วยป้องกันปัญหา ก็ต้องดำเนินการดังกล่าว
แต่ในระยะยาว นี่ไม่ใช่ความคิดที่ดีจริงๆ เป้าหมายอาจเป็นเพียงการบล็อกผู้ใช้ที่พึ่งพาพวกเขา
อย่างไรก็ตาม หากคุณต้องการป้องกันไม่ให้คอนโซลรันสคริปต์ โค้ดนี้ก็ดูดี และมันก็เป็นเช่นนั้น