Jakie jest ryzyko?
Na źle skonfigurowanym współdzielonym hoście PHP każdego klienta będzie działać jako ten sam użytkownik (powiedzmy apachedo 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 apacheten 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 apacheuż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.