Jakie jest ryzyko?
Na źle skonfigurowanym współdzielonym hoście PHP każdego klienta będzie działać jako ten sam użytkownik (powiedzmy apache
do dyskusji). Ta konfiguracja jest zaskakująco powszechna.
Jeśli korzystasz z takiego hosta i używasz WordPress do zainstalowania wtyczki przy użyciu bezpośredniego dostępu do plików, wszystkie twoje pliki wtyczek będą należeć do apache
. Uprawniony użytkownik na tym samym serwerze mógłby zaatakować cię, pisząc skrypt PHP, który wstrzykuje zły kod do twoich plików wtyczek. Przesyłają swój skrypt na własną stronę internetową i żądają jego adresu URL. Twój kod został pomyślnie naruszony, ponieważ jego skrypt działa jako apache
ten sam, który jest właścicielem plików wtyczek.
Co to FS_METHOD 'direct'
ma z tym wspólnego?
Kiedy WordPress musi zainstalować pliki (takie jak wtyczka), używa funkcji get_filesystem_method () w celu ustalenia sposobu uzyskania dostępu do systemu plików. Jeśli nie zdefiniujesz FS_METHOD
, wybierze dla ciebie wartość domyślną, w przeciwnym razie użyje twojego wyboru tak długo, jak to ma sens.
Domyślne zachowanie spróbuje wykryć, czy znajdujesz się w zagrożonym środowisku, takim jak to, które opisałem powyżej, a jeśli uzna, że jesteś bezpieczny, zastosuje tę 'direct'
metodę. W takim przypadku WordPress utworzy pliki bezpośrednio przez PHP, powodując, że należą one do apache
użytkownika (w tym przykładzie). W przeciwnym razie powróci do bezpieczniejszej metody, takiej jak monitowanie o poświadczenia SFTP i tworzenie plików jako ty.
FS_METHOD = 'direct'
prosi WordPressa o ominięcie wykrycia zagrożenia i zawsze tworzy pliki przy użyciu tej 'direct'
metody.
Więc po co korzystać FS_METHOD = 'direct'
?
Niestety, logika WordPress do wykrywania środowiska zagrożonego jest wadliwa i wytwarza zarówno fałszywie dodatnie, jak i fałszywie ujemne. Ups Test polega na utworzeniu pliku i upewnieniu się, że należy on do tego samego właściciela, co katalog, w którym mieszka. Zakłada się, że jeśli użytkownicy są tacy sami, PHP działa jako twoje własne konto i można bezpiecznie instalować wtyczki jako to konto. Jeśli są różne, WordPress zakłada, że PHP działa jako konto współdzielone i instalowanie wtyczek jako tego konta nie jest bezpieczne. Niestety oba te założenia są wykształconymi domysłami, które często będą błędne.
Należałoby użyć define('FS_METHOD', 'direct' );
w fałszywym pozytywnym scenariuszu taki jak ten: jesteś częścią zaufanego zespołu, którego członkowie wszystkich plików przesłać poprzez własny rachunek. PHP działa jako osobny użytkownik. WordPress przyjmie, że jest to środowisko zagrożone i nie przejdzie w 'direct'
tryb domyślny . W rzeczywistości jest udostępniany tylko zaufanym użytkownikom i jako taki 'direct'
tryb jest bezpieczny. W takim przypadku należy użyć, define('FS_METHOD', 'direct' );
aby zmusić WordPress do bezpośredniego zapisywania plików.