Od czasu do czasu natrafiam na następujący fragment motywu:
if ( ! defined('ABSPATH')) exit('restricted access');
Jest na początku niektórych (wszystkich?) Plików PHP w motywie i ma zapobiegać bezpośredniemu dostępowi do pliku przez nikczemne źródła.
Widzę, że nie jest to uwzględnione w dwudziestu dziesięciu lub jedenastu i nigdy nie widziałem, aby było to zalecane w oficjalnej dokumentacji WordPress. Wydaje mi się, że to dobry pomysł, ale nie wiem też wystarczająco dużo o bezpieczeństwie, aby go ocenić, i nie mogę wiele znaleźć w Google.
Czy powinienem to mieć w niestandardowych motywach? Jeśli tak, to czy powinno to być we wszystkich plikach PHP, czy tylko w niektórych?
theme-development
security
mrwweb
źródło
źródło
defined('ABSPATH') OR exit;
defined('WPINC') ? : die();
POdpowiedzi:
Zwykle nie potrzebujesz tego. Ale… jest co najmniej jeden przypadek na krawędzi:
on
,… Atakujący może wywołać ten plik, ustawić brakujące zmienne przy pomocy
GET
lubPOST
i sprawić, by plik motywu wydrukował je. A potem jest problem bezpieczeństwa.Więc… najlepszą opcją nie jest sprawdzenie kontekstu, jak ten z twojego przykładu, ale dobry kod: unikaj zmiennych globalnych, sprawdź ich zawartość przed wydrukowaniem.
W niektórych przypadkach dodam sprawdzenie kontekstu, gdy myślę, że ktoś użyje mojego kodu i zmieni go bez uwzględnienia bezpieczeństwa. To nie boli
źródło