Tworzysz stronę internetową i potrzebujesz pomocy?

Tam, gdzie mogę (i ma to jakikolwiek sens) korzystam z uwierzytelnienia dwuskładnikowego (2FA). W WordPress.com (WordPress jako usługa) z takiego rozwiązania korzystam, w przypadku WordPress.org niestety takiego rozwiązania nie ma. A szkoda, bo takie konto jest przez wiele osób wykorzystywane nie tylko do zgłaszania uwag/problemów, czy też oceniania wtyczek i motywów, ale również do publikacji (i późniejszej aktualizacji) własnych motywów i wtyczek. Nie da się ukryć, że to w wielu przypadkach może być cennym wektorem ataku, i to nie tylko w kontekście platform eCommerce (np. sklep internetowy, platforma kursowa) opartych o WordPressa. Zresztą podobny problem może być w przypadku wtyczki, która ma kilku współautorów, i któryś z nich postanowi zrobić psikusa „na odchodne” pozostałym…

Autoryzajca aktualizacji wtyczek w WordPress.org

Że był to problem realny, najlepiej chyba zaświadczy to, że w ostatnich dniach propozycja, by oprócz standardowego komunikatu (e-maila) z informacją o aktualizacji plików w repozytorium (SVN) dodać jeszcze jeden, ze specjalnym, jednorazowym linkiem, służącym do potwierdzenia, że wgrana aktualizacja została faktycznie przez nas zlecona i akceptujemy jej publikację, została wdrożona.

Teraz każdy deweloper wtyczki może dla niej ustawić mechanizm, który będzie przed publikacją przesłanej aktualizacji wymagał takiej akceptacji. Ważne, że jest to – przynajmniej obecnie – mechaznim dobrowolny, do którego deweloper musi każdą wtyczkę oddzielnie zgłosić.

W tym celu należy w widoku danej wtyczki przejść do widoku zaawansowanego i tam do sekcji „the danger zone”, gdzie znajduje się nowa opcja „release confirmation”:

By aktywować dodatkowe zabezpieczenie dla danej wtyczki, wystarczy kliknąć przycisk „i understand, please enable release confirmations”. Brzmi groźnie jak spojrzeć na komunikaty, sekcję itp., ale tak naprawdę jedyna niedogodnośc gdyby ktoś się rozmyślił, to to, że wyłączyć tę opcję – przynajmniej obecnie – można tylko przez osobisty kontakt ze wsparciem WordPress.org odpowiedzialnym za katalog wtyczek.

Co istotne, opcja ta – jak i sam przycisk – dostępna jest tylko dla wtyczek, w przypadku których korzystamy z „gałęzi kodu”, czyli kolejne wersje znajdują się w odpowiednich podkatalogach w katalogu „tags” repozytorium, a nie jak czasem – zwłaszcza przy mniejszych projektach – w katalogu „trunk”. Istotne jest też to, by znacznik „stable tag” wskazywał właśnie na wersję z podkatalogu w „tags”, a nie „trunk” (przyznam, że na potrzeby testów sam musiałem dokonać szybkiej rekonfiguracji struktury repozytorium, by móc aktywować opisywaną opcję).

Od tego momentu wgranie każdej kolejnej wersji wtyczki spowoduje wysłanie na nasz adres e-mail wiadomości w stylu:

Howdy Patryk,

Patryk has committed a new version of – 1.0.7.

An email confirmation is required before the new version will be released.

Follow the link below to login and confirm the release.

<https://wordpress.org/plugins/developers/releases/?access_token=fgpa82z4ge>

A po kliknięciu w specjalnie do tego celu wygenerowany link trafimy do mini-panelu (Release Management) z listą naszych wtyczek, oraz przyciskiem pozwalającym zaakceptować publikację przesłanej aktualizacji (oczywiście jeśli faktycznie to my dokonaliśmy aktualizacji ;-)):

I tak w skrócie działa nowy mechanizm, i aż dziwne, że tyle czasu musieliśmy na coś takiego czekać (zwykłe 2FA mogłoby być potencjalnie problematyczne ze względu na klientów SVN). W skrócie, bo w wątku, o którym na wstępie pisałem, przewija się też np. temat procedury akceptacji aktualizacji wtyczki w przypadku, gdy jest więcej niż jeden autor. Dlatego zachęcam do samodzielnego zapoznania się z tym/całym wątkiem… ;-)

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Tworzysz stronę internetową i potrzebujesz pomocy?
Patryk
Kurs "WordPress: Pierwsze kroki" (bezpłatna lekcja)