WP-Optimize Plugin oskarżony o oszustwo PageSpeed i inne narzędzia do testowania wydajności
Opublikowany: 2022-08-30Gijo Varghese, programista, który nazywa siebie „entuzjastą wydajności sieci”, w weekend zaszokował użytkowników WordPressa na całym świecie, gdy zamieścił na Twitterze zrzut ekranu, w którym WP-Optimize wyraźnie uniemożliwia ładowanie wybranych plików JavaScript, gdy użytkownicy testują swoje witryny za pomocą popularnej wydajności narzędzia testowe.
„Gdy witryna jest ładowana, pliki JavaScript są ładowane tylko wtedy, gdy klientem użytkownika/przeglądarką nie jest Lighthouse/GTmetrix/Headless Chrome/Pingdom” – powiedział Varghese. „Brak JS = wysokie wyniki. Ale dla prawdziwych użytkowników te pliki JS są ładowane!”
Varghese potwierdził, że testował darmową wersję WP-Optimize, która jest używana na ponad milionie witryn WordPress. UpdraftPlus nabył WP-Optimize w 2016 roku i twierdzi, że narzędzie „ma wszystko, czego potrzebujesz, aby Twoja witryna była szybka i dokładnie zoptymalizowana”. Wersja komercyjna jest również promowana za pośrednictwem darmowej wtyczki hostowanej na WordPress.org.
„Powiedz mi, UpdraftPlus, w jaki sposób mam nadal ufać Twojej firmie w zakresie kopii zapasowych moich klientów, gdy stosujesz te zwodnicze i oszukańcze praktyki?” jeden z klientów, Adam Lowe, powiedział w odpowiedzi na odkrycie przez Varghese wtyczki, która nie ładuje JS dla narzędzi wydajności.
„Wow, wszystko, co mogę powiedzieć, to ogromne rozczarowanie” – powiedział właściciel agencji WordPress i programista Brian Jackson.
Ten rodzaj oszustwa jest niesamowicie podobny do oszustwa zgłoszonego przez kogoś, kto zatrudnił freelancera ds. wydajności w Upwork, który sztucznie manipulował wynikami Google Pagespeed. Inni biorący udział w dyskusji na Twitterze porównali to do skandalu dotyczącego emisji Volkswagena, w którym stwierdzono, że producent samochodów aktywował kontrolę emisji tylko podczas testów laboratoryjnych, aby spełnić wymagania EPA po naruszeniu. Pojazdy na drogach emitowały podczas jazdy do 40 razy więcej tlenków azotu w porównaniu z testami laboratoryjnymi.
Varghese i kilku innych uczestników rozmowy doszli do wniosku, że właśnie dlatego właściciele witryn powinni skupić się na tym, czego doświadczają użytkownicy w świecie rzeczywistym, a nie na wynikach testów wydajnościowych.
Nawet skupiając się na prawdziwych doświadczeniach użytkowników, właściciele witryn często polegają na testach, aby zdiagnozować problemy i zobaczyć, jak można poprawić wydajność witryny. Nie spodziewają się, że wtyczka będzie ukrywać pliki JS przed narzędziami wydajności. Oszukiwanie testów podważyło wiarygodność WP-Optimize.
"Wow. Jeśli to prawda, jest to tak krótkowzroczne, jak niewybaczalne” – powiedział klient UpdraftPlus, Johnathon William. „I zastanawiam się, czy mogę zaufać ich drugiemu produktowi, UpdraftPlus, którego używam do tworzenia kopii zapasowych kilku witryn klientów”.
Skontaktowałem się z UpdraftPlus i główny programista David Anderson powiedział, że firma nie była świadoma problemu z kodem, ale powiązała część historii. UpdraftPlus krótko rozmawiał z autorem wtyczki Fast Velocity Minify na temat możliwości łączenia sił, w którym utrzymałby moduł minifikacji w ramach WP-Optimize i zyskał więcej użytkowników. Ostatecznie nie mogli dojść do porozumienia, ale w tym czasie programiści WP-Optimize rozwidlili i dostosowali Fast Velocity Minify na licencji GPL. Deweloperzy, którzy pracowali nad tą adaptacją, nie są już w firmie.
„W zatwierdzeniu w naszym własnym repozytorium źródłowym, 2,5 roku temu (styczeń 2020 r.), zatwierdzenie zostało oznaczone jako 'Rozwiąż 'Dodaj kod CSS i JS Minification GPL z 'Fast Velocity Minify' – Część 6'”, powiedział Anderson. „Część serii początkowych połączeń kodu, które zostały ponownie zrefaktoryzowane, aby były czystsze i wykorzystywały nasze preferencje dotyczące stylu kodowania (ale nie zmieniały żadnej funkcjonalności). Tak więc oczywistym zamiarem połączenia tych linii było przeniesienie zrefaktoryzowanego kodu bez wprowadzania na tym etapie żadnych zmian.
„Według historii zmian (tj. funkcji 'git admin') nie wprowadzono żadnych zmian w tym kodzie, tj. jest on importowany. (Historia WP Optimize jest również publiczna w WordPress SVN).”
Po pobieżnym zbadaniu kodu Anderson doszedł do wniosku, że jego zespół może potrzebować ponownej oceny, ponieważ nie był świadomy tego, co zostało dodane dwa lata temu.
„Gdy próbuję prześledzić tę funkcję w kodzie wtyczek, intencją na pierwszy rzut oka wydaje się, że jeśli odwiedzający witrynę jest „botem”, to kod, który jest bezcelowy dla botów, nie zostanie wykonany, " powiedział.
„Jednakże powiedziawszy to, 1) nazwy botów wyglądają na mocno zaciemnione/zredagowane, co jest dziwne (dlaczego?) oraz 2) istnieje wiele bardziej oczywistych botów, których tam nie ma, takich jak sam Googlebot. Gdyby ta funkcja została mi dzisiaj przedstawiona do oceny, z pewnością zadałbym sobie pytanie, dlaczego tak jest. Nie mam nic przeciwko temu, by przeczytać się 32 miesiące temu, ale pamiętam, że była to długa seria dużych łat, więc nie była dokładnie analizowana, linijka po linijce. Wiedzieliśmy, że zidentyfikowaliśmy FVM jako dobrą wtyczkę, a naszym głównym celem było dostosowanie jej do naszej struktury i stylu, i to były rzeczy, na które osobiście patrzyłem jako końcowy recenzent”.
Podsumowując, zespół programistów UpdraftPlus nie wiedział o tym kodzie, dopóki wątek na Twitterze nie został opublikowany w weekend.
„Z pewnością cieszę się, że udało mi się to zrealizować” – powiedział Anderson. „Powiązany kod komentuje powiązany fragment w oryginalnym źródle, że ma na celu zapobieganie niepotrzebnym żądaniom botów, ale po bliższym zbadaniu niż ta linia w tamtym czasie, to jest coś, na co będziemy chcieli się przyjrzeć, ponieważ wygląda wątpliwe/dziwne, a zrobimy to, przypisując go członkowi zespołu, który jest naszym ekspertem w optymalizacji JavaScript”.
Anderson powiedział również, że jeśli eksperci ds. optymalizacji JavaScript nie mogą znaleźć żadnego uzasadnionego celu dla kodu, „na pewno zostanie on usunięty”, z jasnym i jednoznacznym ujawnieniem uzasadnienia tego kodu.
W międzyczasie firma UpdraftPlus opublikowała powiadomienie na forum pomocy technicznej wtyczki, aby poinformować użytkowników, że kod jest obecnie badany.
„Aby zachować jasność i uspokoić umysły użytkowników: kod, o którym mowa, nie jest niebezpieczny, nie jest wirusem, infekcją, użytecznym dla hakerów ani nic w tym rodzaju” – powiedział Anderson. „Zarzut jest taki, że jedynym celem istnienia jest skuteczne oszukiwanie na testach prędkości. Taki kod, jeśli tak, nie należy do WP Optimize i usuniemy go wraz z nową wersją. Integralność naszych produktów i zaufanie naszych klientów są dla nas kluczowe (i celowe umieszczanie rzeczy w kodzie open source, które narażają na kompromis, co jest, szczerze mówiąc, głupią rzeczą do zrobienia).”