ปลั๊กอิน WP-Optimize ถูกกล่าวหาว่าโกง PageSpeed ​​และเครื่องมือทดสอบประสิทธิภาพอื่นๆ

เผยแพร่แล้ว: 2022-08-30

Gijo Varghese นักพัฒนาที่เรียกตัวเองว่า "ผู้คลั่งไคล้ประสิทธิภาพของเว็บ" ทำให้ผู้ใช้ WordPress ทั่วโลกตกใจเมื่อสุดสัปดาห์ที่ผ่านมา เมื่อเขาทวีตภาพหน้าจอว่า WP-Optimize ป้องกันไม่ให้โหลดไฟล์ JavaScript ที่เลือกอย่างชัดเจนเมื่อผู้ใช้ทดสอบไซต์ผ่านประสิทธิภาพยอดนิยม เครื่องมือทดสอบ

“เมื่อไซต์ถูกโหลด ไฟล์ JavaScript จะถูกโหลดก็ต่อเมื่อ user-agent/browser ไม่ใช่ Lighthouse/GTmetrix/Headless Chrome/Pingdom” Varghese กล่าว “ไม่มี JS = คะแนนสูง แต่สำหรับผู้ใช้จริง ไฟล์ JS เหล่านี้ถูกโหลด!”

Varghese ยืนยันว่าเขากำลังทดสอบ WP-Optimize เวอร์ชันฟรี ซึ่งใช้ในไซต์ WordPress มากกว่าหนึ่งล้านไซต์ UpdraftPlus ได้รับ WP-Optimize ในปี 2559 และอ้างว่าเครื่องมือนี้ “มีทุกสิ่งที่คุณต้องการเพื่อให้เว็บไซต์ของคุณรวดเร็วและปรับให้เหมาะสมอย่างทั่วถึง” เวอร์ชันเชิงพาณิชย์ยังได้รับการส่งเสริมผ่านปลั๊กอินฟรีที่โฮสต์บน WordPress.org

“บอกฉันที UpdraftPlus ฉันจะยังคงไว้วางใจบริษัทของคุณกับข้อมูลสำรองของลูกค้าของฉันได้อย่างไร เมื่อคุณใช้แนวทางปฏิบัติที่หลอกลวงและฉ้อฉลเหล่านี้” ลูกค้ารายหนึ่ง Adam Lowe กล่าวในการตอบสนองต่อการค้นพบปลั๊กอินของ Varghese ที่ไม่โหลด JS สำหรับเครื่องมือประสิทธิภาพ

“ว้าว ทั้งหมดที่ฉันพูดได้คือสิ่งที่น่าผิดหวังที่สุด” Brian Jackson เจ้าของและผู้พัฒนาเอเจนซี่ WordPress กล่าว

การหลอกลวงประเภทนี้คล้ายกับการหลอกลวงที่รายงานโดยบุคคลที่ทำสัญญากับนักแปลอิสระด้านประสิทธิภาพบน Upwork ซึ่งบิดเบือนผลลัพธ์ของ Google Pagespeed คนอื่นๆ ที่เข้าร่วมการสนทนาบน Twitter เปรียบเทียบกับเรื่องอื้อฉาวเรื่องการปล่อยมลพิษของ Volkswagon ซึ่งพบว่าผู้ผลิตรถยนต์เปิดใช้งานการควบคุมการปล่อยมลพิษเฉพาะในระหว่างการทดสอบในห้องปฏิบัติการเพื่อให้เป็นไปตามข้อกำหนดของ EPA หลังจากการละเมิด ยานพาหนะบนท้องถนนปล่อยก๊าซไนโตรเจนออกไซด์มากขึ้นถึง 40 เท่าขณะขับรถ เมื่อเทียบกับวิธีการทดสอบในห้องปฏิบัติการที่มีหัวเรือใหญ่

Varghese และผู้เข้าร่วมคนอื่นๆ ในการสนทนาสรุปว่านี่คือเหตุผลที่เจ้าของไซต์ควรให้ความสำคัญกับสิ่งที่ผู้ใช้ในโลกแห่งความเป็นจริงกำลังประสบ แทนที่จะใช้คะแนนการทดสอบเครื่องมือประสิทธิภาพ

แม้จะเน้นที่ประสบการณ์ของผู้ใช้จริง เจ้าของไซต์มักอาศัยการทดสอบเพื่อวินิจฉัยปัญหาและดูว่าสามารถปรับปรุงประสิทธิภาพของไซต์ได้อย่างไร พวกเขาไม่ได้คาดหวังว่าปลั๊กอินจะซ่อนไฟล์ JS จากเครื่องมือประสิทธิภาพ การทดสอบหลอกได้บั่นทอนความน่าเชื่อถือของ WP-Optimize

"ว้าว. หากเป็นเรื่องจริง นี่เป็นสายตาสั้นที่ไม่อาจให้อภัยได้” Johnathon William ลูกค้าของ UpdraftPlus กล่าว “และมันทำให้ฉันสงสัยว่าฉันสามารถไว้วางใจ UpdraftPlus ผลิตภัณฑ์อื่นๆ ของพวกเขาได้หรือไม่ ซึ่งฉันใช้เพื่อสำรองข้อมูลไซต์ไคลเอนต์หลายแห่ง”

ฉันได้ติดต่อ UpdraftPlus และหัวหน้านักพัฒนา David Anderson กล่าวว่า บริษัท ไม่ได้ตระหนักถึงปัญหาของรหัส แต่เกี่ยวข้องกับ backstory บางส่วน UpdraftPlus ได้พูดคุยกับผู้เขียนปลั๊กอิน Fast Velocity Minify สั้น ๆ เกี่ยวกับความเป็นไปได้ของการรวมกองกำลัง ซึ่งเขาจะรักษาโมดูลการลดขนาดภายใน WP-Optimize และเพิ่มจำนวนผู้ใช้ ในที่สุดพวกเขาไม่สามารถตกลงกันได้ แต่ในช่วงเวลานั้นนักพัฒนาของ WP-Optimize ได้แยกและดัดแปลง Fast Velocity Minify ภายใต้ GPL นักพัฒนาที่ทำงานเกี่ยวกับการปรับตัวนั้นไม่ได้อยู่กับบริษัทแล้ว

Anderson กล่าวว่า "ในการดำเนินการกับที่เก็บซอร์สของเราเองเมื่อ 2.5 ปีที่แล้ว (ม.ค. 2020) การคอมมิตนั้นมีชื่อว่า 'แก้ไข 'เพิ่มโค้ด CSS และ JS Minification GPL จาก 'Fast Velocity Minify' - ตอนที่ 6' “ส่วนหนึ่งของชุดของการรวมรหัสเบื้องต้นที่ได้รับการจัดองค์ประกอบใหม่เพื่อให้สะอาดขึ้นและใช้การตั้งค่ารูปแบบการเข้ารหัสของเรา (แต่จะไม่เปลี่ยนฟังก์ชันการทำงานใดๆ) ดังนั้น ความตั้งใจที่ชัดเจนของการผสานบรรทัดเหล่านั้นคือการนำโค้ดที่ปรับโครงสร้างใหม่มาแทนที่โดยไม่ต้องทำการเปลี่ยนแปลงใดๆ ในขั้นตอนนั้น

“ตามประวัติการคอมมิท (เช่น ฟังก์ชัน 'gitตำหนิ') ไม่มีการเปลี่ยนแปลงใดๆ กับโค้ดนั้นตั้งแต่นั้นมา กล่าวคือ เป็นโค้ดที่นำเข้า (ประวัติของ WP Optimize นั้นเปิดเผยต่อสาธารณะใน WordPress SVN ด้วย)”

หลังจากตรวจสอบรหัสคร่าวๆ แอนเดอร์สันสรุปว่าทีมของเขาอาจต้องตรวจสอบรหัสอีกครั้ง เนื่องจากพวกเขาไม่ทราบว่ามีอะไรเพิ่มเข้ามาเมื่อสองปีก่อน

“ในขณะที่ฉันพยายามติดตามฟังก์ชันนั้นผ่านโค้ดภายในปลั๊กอิน ความตั้งใจ ที่ปรากฏอยู่ตรงหน้า ดูเหมือนว่าหากผู้เยี่ยมชมเว็บไซต์เป็น 'บอท' โค้ดที่ไม่มีประโยชน์สำหรับบอทจะไม่ถูกดำเนินการ " เขาพูดว่า.

“อย่างไรก็ตาม ที่กล่าวว่า 1) ชื่อบอทดูเหมือนจะคลุมเครือ/ปิดบังอย่างมาก ซึ่งแปลก (ทำไม?) และ 2) มีบอทที่ชัดเจนกว่ามากมายที่ไม่ได้ระบุไว้ที่นั่น เช่น ตัว Googlebot เอง ถ้าฟังก์ชันนั้นถูกนำหน้าฉันมาตรวจสอบในวันนี้ ฉันคงสงสัยว่าทำไมถึงเป็นเช่นนั้น ฉันไม่สามารถอ่านใจตัวเองได้เมื่อ 32 เดือนที่แล้ว แต่ฉันจำได้ว่ามันเป็นชุดแพทช์ขนาดใหญ่ที่มีความยาว ดังนั้นจึงไม่ได้วิเคราะห์อย่างละเอียดในแต่ละบรรทัด เรารู้ว่าเราได้ระบุ FVM เป็นปลั๊กอินที่ดีและจุดเน้นหลักของเราคือการปรับให้เข้ากับโครงสร้างและสไตล์ของเรา และนั่นคือสิ่งที่ผมมองว่าเป็นการส่วนตัวในฐานะผู้ตรวจสอบขั้นสุดท้าย”

โดยสรุป ทีมพัฒนาของ UpdraftPlus ไม่ทราบรหัสนี้จนกว่าจะมีการเผยแพร่เธรด Twitter ในช่วงสุดสัปดาห์

“ฉันดีใจมากที่ได้สิ่งนี้มาสู่ความตั้งใจของเรา” แอนเดอร์สันกล่าว “โค้ดที่เกี่ยวข้องแสดงความคิดเห็นเกี่ยวกับแฟรกเมนต์ที่เกี่ยวข้องในแหล่งที่มาเดิมว่ามีจุดประสงค์เพื่อป้องกันการร้องขอบอทที่ไม่จำเป็น แต่ในการตรวจสอบอย่างใกล้ชิดกว่าบรรทัดนั้นในตอนนั้น นั่นคือสิ่งที่เราต้องการดู น่าสงสัย/แปลก และเราจะทำอย่างนั้นโดยมอบหมายให้สมาชิกในทีมที่เป็นผู้เชี่ยวชาญในการเพิ่มประสิทธิภาพ JavaScript ของเรา”

แอนเดอร์สันยังกล่าวอีกว่าหากผู้เชี่ยวชาญด้านการเพิ่มประสิทธิภาพ JavaScript ไม่พบจุดประสงค์ที่ถูกต้องสำหรับโค้ด "โค้ดนั้นจะถูกลบออกอย่างแน่นอน" พร้อมการเปิดเผยเหตุผลที่ชัดเจนและชัดเจนสำหรับเหตุผลเบื้องหลัง

ในระหว่างนี้ UpdraftPlus ได้เผยแพร่ประกาศในฟอรัมการสนับสนุนของปลั๊กอินเพื่อแจ้งให้ผู้ใช้ทราบว่าขณะนี้รหัสอยู่ระหว่างการตรวจสอบ

“เพื่อความชัดเจนและตั้งค่าจิตใจของผู้ใช้ให้สงบ: รหัสที่เป็นปัญหาไม่เป็นอันตราย ไวรัส การติดไวรัส มีประโยชน์สำหรับแฮกเกอร์ หรืออะไรก็ตามประเภทนั้น” แอนเดอร์สันกล่าว “ข้อกล่าวหาคือจุดประสงค์เดียวที่มีอยู่คือโกงการทดสอบความเร็วอย่างมีประสิทธิภาพ รหัสดังกล่าวไม่อยู่ใน WP Optimize และเราจะลบออกด้วยการเปิดตัวใหม่ ความสมบูรณ์ของผลิตภัณฑ์ของเรา และความไว้วางใจจากลูกค้า เป็นสิ่งสำคัญสำหรับเรา (และจงใจใส่สิ่งต่าง ๆ ในโอเพนซอร์สโค้ดที่ประนีประนอมซึ่งเป็นสิ่งที่โง่เขลาที่ต้องทำอย่างตรงไปตรงมา)”