Press "Enter" to skip to content

Lista zagrożeń i sposoby na ich uniknięcie

1. Nigdy nie ufać danym pochodzącym od użyszkodnika. Wszystko co przychodzi od usera (włącznie z user agent, coookies, etc) musi przejść walidacje aby nie było tak jak na początku kwiatków pokroju XSS w loginie. Regex + trim, strlen to podstawa.
2. Mechanizm antiflood aby ograniczyć ilość requestów/spamu.
3. Captcha nie zawsze jest dobrym rozwiązaniem (OCR), nawet ta od G, która po pierwsze zmniejsza dostępność stron dla niewidomych, a po drugie nadal daje się oszukać.
4. Warto mieć punkt zahaczenia pokroju mail choć to też nie wyeliminuje catch-all + skryptu z curl’em do otwierania linków do rejestracji stąd patrz punkt 2.
5. Obecnie prepare statements to podstawa przy wbijaniu danych do db.
6. Limitacja postmaxsize, uploadmaxfilesize, maxfileuploads, etc.
7. Wybić sobie z głowy wywołania systemowe żeby nie narobić szkody.
8. Trzymać wszystko ponad publichtml/privatehtml mimo, że można mieć dobre .htaccess blokujące określone rzeczy to czasami może wystąpić kwiatek.
9. W dobie obecnego sprzętu nie warto używać chociażby md5 nawet z solą per user. bcrypt to podstawa.
10. Zapoznać się z OWASP.
11. Ruch po HTTPS aby nie było man in the middle (patrz również Strict-Transport-Security).
12. Przypięcie zalogowanego usera do IP lub puli, bo session hijacking. Patrz również na session fixation.
13. Logować wszystkie zdarzenia i w razie potrzeby karcić.
14. Plikom przychodzącym od usera należy się dobrze przyjrzeć co do rozszerzenia, nagłówka, etc.
15. Jeżeli robimy include ze zmiennej to należy ją odpowiednio walidować aby ktoś przez przypadek nie przeglądał zawartości całego serwera.
16. Jeżeli jest to serwer dzielony to warto używać folderu /tmp/ dla plików/sesji/etc pod swoim kontem aby nikt postronny nie podglądał.
17. Warto się zastanowić czy zezwalać na zewnętrzne grafiki. 12 lat temu miałem taką zabawę, że wstawiałem avatar ze zdalnego serwera i podglądałem co poszczególni użytkownicy robią.
18. Zapoznać się z atakami typu CHIRA Attack Vector, Insecure Direct Object References, etc.
19. Optymalizować zapytania aby nie zapchać. Przykładowo varchar(15) dla IP może być UNSIGNED INT – nawet łatwiej się szuka 😉
20. Odpowiednie uprawnienia dla użytkownika db aby nie zrobił kuku vide BENCHMARK(), którą można zrobić DoS’a.
21. Stripować wszystko jak leci chyba, że chcemy XSS.
22. Uważać na serializacje danych.
23. Uważać na XXE.
24. Budować relacyjnie i z odpowiednimi kluczami aby nie zatkać bazy..
25. Uważać na mechanizmy tokenów i „losowych wartości”.
26. Sprawdzać wartości dla paginacji, limity wyświetlania wiadomości bo można jednym machem wszystko oglądać bez ww. mechanizmu.
27. Jeżeli już debugujesz na produkcji to dumpuj zawartość tylko dla siebie.
28. Ustaw odpowiednie errorreporting i displayerrors, bo ścieżki są bardzo pomocne dla potencjalnego dzbana.
29. Backupować aby nie zaliczyć fackupu i nie klękać psychicznie przy restore.
30. Paginacje walidować aby nie było kwiatków, że dając limit 666 666 666 można sobie zrobić dump.

VN:F [1.9.22_1171]
Twoja ocena wpisu:
Rating: 5.0/5 (3 votes cast)
Lista zagrożeń i sposoby na ich uniknięcie, 5.0 / 5 , ocen: 3
Warto się uczyć Ruby?

Obecnie jestem Python devem ale zainteresowało mnie Ruby. Warto się go uczyć jeśli znam już język backendowy? Czy raczej możliwości Read more

Test Turinga, Nagroda Loebnera i wielkie nadzieje

Alan Turing w 1950 roku napisał słynny artykuł "Computing Machinery and Intelligence", w którym zadaje pytanie: "Czy maszyny mogą myśleć?" Read more

Sprawdzanie, czy duża liczba jest idealnym kwadratem

https://translate.google.com/translate?sl=hu&tl=pl&u=https://petr-mitrichev.blogspot.com/2017/12/a-quadratic-week.html Wybierzmy liczbę pierwszą p. Jeśli n jest idealnym kwadratem, to n mod p jest zawsze kwadratową resztą. Jeśli nie, Read more

Scraper pobierający dane z innej strony

Zacząłem zabawę z NextJS celem nauki języka, próbuje zrobić scraper pobierający dane z innej strony i wyświetlający je w przystępny Read more

Be First to Comment

    Dodaj komentarz

    Twój adres e-mail nie zostanie opublikowany.




    Wordpress Social Share Plugin powered by Ultimatelysocial