ForumCała strona

Nawigacja

Aktualnie online

Gości online: 3

Użytkowników online: 0

Łącznie użytkowników: 25,400
Najnowszy użytkownik: AlojzyBartek

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

Zbigniew@
17.11.2024 11:33:24
Nie ten grzeszy kto pije, ale ten, kto się nie upije.

JazOOn
16.11.2024 20:46:18
tja

Zbigniew@
15.11.2024 18:58:17
Kto pije, ten nie bije.

JazOOn
31.10.2024 20:49:47
Kto pije?

piterus
30.10.2024 19:45:48
I będziemy śpiewać: "Kiedy 20 blisko, przebadaj wszystko, przebadaj wszystko..." Pfft

Pobierz nową wersję
Pobierz podręcznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Nawigacja

Jak pisać bezpieczne MOD'y i INFUSION'y

Napisane przez Wooya dnia 08 kwietnia 2007 15:57 · 4 komentarze · 9051 czytań · Drukuj · Facebook · Wykop

Streszczenie:

Krótki instruktarz dla bardziej twórczych ;)

Wiemy, że bezpieczeństwo PHP-Fusion jest sprawą bardzo ważną (np. odporność na ataki XSS, SQL Injection, DoS). Chcę tutaj opisać jak pisać bezpieczne moduły i infusiony przy użyciu funkcji ogólnie dostępnych w core (jądrze) PHP-Fusion.

1) prawa użytkowników:
aby sprawdzić poziom użytkownika (level) używaj wbudowanych stałych: iGUEST, iUSER, iMEMBER, iADMIN, iSUPERADMIN, iUSER_RIGHTS, iUSER_GROUPS i funkcji sprawdzających checkrights(), getuserlevel(), checkgroup(), groupaccess().
Nie próbuj napisać swoich własnych, "lepszych" procedur ;)

2) zapytania MySQL:
zawsze używaj wbudowanych PHP-Fusion funkcji obsługi bazy MySQL, aby wykonywać swe kwerendy:
- dbquery() - aby wysłać zapytanie
- dbrows() - aby pobrać ilość dostępnych wierszy w wyniku
- dbcount() - aby policzyć ilość danych w wyniku
- dbresult() - aby pobrać wynik
- dbarray() - aby pobrać dane do tablicy asocjacyjnej
- dbarraynum() - aby pobrać konkretny wiersz z wyniku

W większości przypadków te funkcje są wystarczające do obsługi Twojej bazy danych.

NOTKA: Pamiętajcie, aby optymalizować swoje zapytania do bazy! Serwery niezbyt kochają tysiące kwerend przy jednym przeładowaniu strony ;)

3) zmienne serwera $_POST i $_GET:
- zawsze pamiętaj, aby usuwać potencjalnie złośliwe dane PHP i HTML z przesyłanych ciągów przy pomocy funkcji stripinput(), np.:



Ta funkcja zamienia wszystkie potencjalnie niebezpieczne HTML'owe znaki na ich symboliczne odpowiedniki.

- jeżeli przesyłana zmienna POST/GET powinna być numeryczna, to do sprawdzenia tego używaj funkcji isNum(). Jeżeli przesyłana wartość numeryczna jest niezbędna do wstawienia do tabeli, to używaj kodu sprawdzającego jak np. poniżej:



w innym wypadku:



- nigdy nie wysyłaj poprzez zmienną środowiskową GET ważnych danych takich jak hasła!

- staraj się operować na bazie danych poprzez poja ID (numeryczne). O wiele prościej sprawdzić bezpieczeństwo parametru jeżeli jest wartością numeryczną niż tekstową (przez funkcje isNum()). Parsowanie ciągów tekstowych wymaga dobrej znajomości funkcji ekspresyjnych PCRE.

4) inne problemy:
- zawsze umieszczaj na wstępie swojego infusiona administracyjnego następujący kod:


- zawsze umieszczaj na wstępie swojego panelu następujący kod:


- zawsze umieszczaj następujący kod na wstępie swoich include'ów:


- zawsze weryfikuja upload'owane obrazki poprzez funkcję verify_image(). Pamiętaj, że niektóre przeglądarki (wiesz, KTÓRA ;) mogą wykonywać niebezpieczne (złośliwe) kody JavaScript poprzez tagi HTML'a

- nie zostawiaj ostrzeżeń e_notice samym sobie. Jeżeli już się jakiś pojawia, to oznacza, że istnieje potencjalna dziura do wykorzystania przez haker'ów. Deklaruj zmienne z domyślną wartością, które będziesz wykorzystywał. Przykład bez deklaracji (ostrzeżenie e_notice):



Powyższy skrypt wyda sotrzeżenie: Variable $result not defined at line XXX.

Poniżej poprawiony skrypt bez ostrzeżenia:



-----------------------------
Ten artykuł nie obejmuje wszystkich zagadnień bezpieczeństwa skryptów PHP, ale powinien pomóc młodym programistom w pisaniu bardziej bezpiecznych skryptów dla PHP-Fusion.

Pozdrówka:
Wooya
wooya [at] 2loud [dot] net [dot] pl

Komentarze

#1 | szer dnia 08 kwietnia 2007 16:25
Dobry artykuł Wink. Napewno przyda się każdemu kto pisze modyfikacje i dodatki
#2 | polven26 dnia 08 kwietnia 2007 17:22
bajeranckie!!!Grin
#3 | prybka4 dnia 10 kwietnia 2007 20:08
Fajnie że ktoś to poruszył
#4 | syber dnia 29 listopada 2007 16:25
Czym sie rozni iUSER od iMEMBER?

Dodaj komentarz

Zaloguj się, aby móc dodać komentarz.

Oceny

Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się lub zarejestruj, żeby móc zagłosować.

Świetne! Świetne! 100% [1 głos]
Bardzo dobre Bardzo dobre 0% [0 głosów]
Dobre Dobre 0% [0 głosów]
Średnie Średnie 0% [0 głosów]
Słabe Słabe 0% [0 głosów]
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl