Jakie są typowe wady bezpieczeństwa, których muszę szukać? [Zamknięte]


16

Jako deweloper wtyczek WP, jakie są główne wady / dziury w zabezpieczeniach, których powinienem szukać?

Zaraz utworzę nową wtyczkę z panelem konfiguracji (tj. Pola wejściowe i takie tam). O co powinienem się martwić?

Na przykład, czy dezynfekcja danych to tak wielka sprawa, ponieważ znajduje się w obszarze / wp-admin /? Czy ktoś złośliwy może bezpośrednio trafić na moją stronę wtyczki i wysłać żądania POST lub coś w tym rodzaju?

Dziękuję Ci!

Odpowiedzi:


16

Oto zmodyfikowana lista kontrolna, oparta na moich bieżących (w toku) ustawieniach / liście kontrolnej bezpieczeństwa danych używanych do przeglądania Motywów (zasady nie powinny różnić się od Wtyczek niż dla Motywów):

  1. Wtyczki powinny poprzedzać wszystkie opcje, funkcje niestandardowe, zmienne niestandardowe i stałe niestandardowe wtyczką.

  2. Wtyczki powinny celowo implementować opcje wtyczek i ustawienia wtyczek, zamiast polegać na kopiowaniu i wklejaniu skryptów z samouczków witryny, takich jak te poniżej, które są nieaktualne i nie zawierają odpowiedniego bezpieczeństwa danych:

  3. Wtyczki powinny używać tej add_options_page()funkcji, aby dodać stronę ustawień wtyczek do Settingsmenu, zamiast add_menu_page()dodawać menu najwyższego poziomu.

  4. Wtyczki powinny korzystać z odpowiedniej możliwości (np. manage_options), Aby móc dodać stronę ustawień.

  5. Wtyczki powinny zapisywać opcje w jednej tablicy, zamiast tworzyć wiele opcji dla strony ustawień. Użycie interfejsu API ustawień (patrz poniżej) poradziłoby sobie z tym.

  6. Wtyczki należy użyć interfejsu API ustawień (patrz poniżej), aby uzyskać i zapisać dane wejściowe forma zamiast polegać na $_POSTi $_REQUESTdane bezpośrednio.

  7. Do wyboru i wybierz Opcje, należy użyć wtyczki checked()i selected()funkcje do wyprowadzania checked="checked"i selected="selected"odpowiednio.

  8. Wtyczki powinny sprawdzać poprawność i dezynfekcję wszystkich niezaufanych danych przed wprowadzeniem danych do bazy danych i powinny uciec od wszystkich niezaufanych danych przed wyjściem w polach formularza Ustawienia i przed wyjściem w plikach szablonów motywu:

  9. Wtyczki powinny być używane esc_attr()do wprowadzania tekstu i esc_html()(lub esc_textarea()w WP 3.1) dla obszarów tekstowych .

  10. Wtyczki powinny jawnie zapewniać sprawdzanie wartości jednorazowej na stronie ustawień, jeśli nie używa interfejsu API ustawień:

  11. Zdecydowanie zaleca się również, aby wtyczki korzystały z interfejsu API ustawień, który jest łatwiejszy w użyciu, bezpieczniejszy i zajmuje dużo pracy na stronach ustawień:

Dobry samouczek korzystania z interfejsu API ustawień można znaleźć w:

Jeśli chcesz sprawdzić motyw z bezpieczną i solidnie zakodowaną stroną ustawień motywu, sprawdź ten motyw:
http://wordpress.org/extend/themes/coraline


I powinienem dodać: jeśli ktoś zauważy, że czegoś brakuje na liście, proszę o komentarz , abym mógł dodać to do listy kontrolnej, aby poprawić ocenę bezpieczeństwa dla Motywów!
— Chip Bennett

Wow, świetna lista, dzięki. Zastanawiam się, czy warto zamienić to pytanie w wiki społeczności i nadać każdemu z tych punktów własną odpowiedź, aby lepiej umożliwić dyskusję i opracowanie?
— goldenapples

Byłbym w tym w porządku, ale nie chcę przejmować pytania oryginalnego plakatu (chyba że tak się dzieje na StackExchange? Nadal jestem tu nowy ...).
— Chip Bennett

Nie wiem też ... zostawię to moderatorowi, jak sądzę. Wydaje się, że byłoby to świetne pytanie na wiki, ponieważ jego tak ważne i najlepsze praktyki wciąż się rozwijają. @Rarst?
— goldenapples 30.03.11

W razie potrzeby mogę utworzyć nowe pytanie?
— Chip Bennett

11

Istnieją dwa aspekty:

  1. Podstawowe zasady.

    • Cokolwiek zapisano w bazie danych, należy sprawdzić, czy nie ma wstrzyknięć SQL.
    • Cokolwiek jest drukowane na ekranie, należy sprawdzić, czy nie drukuje szkodliwych skryptów JavaScript.
    • Ilekroć ktoś coś robi, należy sprawdzić, czy jego intencją było, i czy ma odpowiednie możliwości.
    • Jest o wiele więcej rzeczy, o których ty lub ja nigdy nie pomyślicie, żeby to sprawdzić.
  2. Specyfika

    • Nowoczesne WordPress traktuje bezpieczeństwo poważnie i ma na celu ułatwienie programistom.
    • Tak więc w przypadku większości rzeczy, które chcesz zrobić, najprawdopodobniej jest to możliwe dzięki interfejsom API WP.
    • Tak więc, cokolwiek robisz, pierwszym krokiem byłoby dopracowanie i zbadanie odpowiedniego API.
    • Im dalej od wspólnej i prostej funkcjonalności, tym bardziej złożone rzeczy trzeba będzie studiować i wdrażać.

1
  1. Dodaj defined('ABSPATH') or die('Access denied');do każdego skryptu wtyczki używanego bezpośrednio przez wordpress
  2. Dodaj pusty plik index.php w każdym katalogu
  3. Dodaj plik .htaccess w katalogu wtyczek z niezbędnymi instrukcjami, aby zapobiec bezpośredniemu dostępowi do niektórych plików wtyczki.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.