Podstawy PHP i MySQL
Temat 16 - Zabezpieczenie skryptu współpracującego z bazż MySQL
Powrót do spisu tematów
W tym rozdziale:
|
Po co zabezpieczażż
Gdy stworzymy użytkownikowi możliwość wprowadzania danych do bazy
lub wyszukiwania danych według zadanego klucza, zawsze istnieje
niebezpieczeństwo przesłania tak przygotowanego zapytania, które
zniszczy dane lub wyżwietli użytkownikowi informacje, do których
według naszych założeń nie powinien mieć prawa dostępu. óżczenie z bazż z najniższymi uprawnieniami Warto przygotował kilka różnych kont do tej samej
bazy z różnymi uprawnieniami. Tak wiżc jeżeli zadaniem skryptu jest tylko wyżwietlenie zawartożci ksiżgi gożci, wystarczy, gdy pożżczy siż on z bazż wykorzystujżc konto "a". W tej sytuacji użytkownik nie przekaże w wartożciach zmiennych żadnego kodu, który mógżby zmieniż wartożci danych lub je skasoważ. Podobnie w każdej innej sytuacji, jeżeli chcemy zezwoliż użytkownikowi dopisaż wartożci do bazy, wystarczy, jeżeli pożżczy się skrypt z bazż wykorzystując konto "b". Filtrowanie danych pochodzących od użytkownika Zasadniczo wszystkie dane, które trafiają do skryptu z zewnątrz, są narażone na modyfikację celem nieautoryzowanego dostępu do danych. Najłatwiej jest przesłać fragment kodu, jeżeli użytkownik ma do dyspozycji pole tekstowe. Należy jednak "brać pod lupę" wszystkie zmienne, które będą miały stycznośż z bazą. Mogą to być zmienne przechowywane w sesji, w plikach cookie, przesyżane z formularza nawet z pól typu radio lub checkbox. Wszystkie te zmienne mogą być modyfikowane i wykorzystane do ataku. Pierwszym sposobem filtrowania jest dodanie znaku
backsklash \ (znak dosżownożci) przed wszystkie znaki potencjalnie
niebezpieczne (apostrof, cudzysłów) za pomocą funkcji
addslashes(); if(!empty($_POST["tresc"])){$tresc=addslashes($_POST["tresc"]);$krok=trim($tresc);}else{$tresc=0;}; Tak więc wartożż zmiennej zostanie dopisana do bazy wraz ze znakami dosżowności. Aby pozbyż się znaków dosłowności, gdy chcemy wyświetlić wartość odczytaną z bazy, można zastosować odwrotną funkcją, usuwającą znaki dosłowności stripslashes();, np.: $tresc=stripslashes($tresc); Proszż do swojej ksiągi gości wpisać post o
następującej treści: Aby zabezpieczyć się przed wyżwietlaniem kodu wprowadzonego przez użytkownika, należy przed wyżwietleniem wartości zmiennej zastosować funkcję htmlspecialchars();
<żphp Niejednokrotnie spodziewamy się, jakiego
charakteru zmienne mogż byż podane przez użytkownika. Gdy użytkownik
wprowadza login lub hasżo, możemy wymagaż od niego stosowania tylko
liter alfabetu łacińskiego oraz cyfr. Użycie wszelkich innych znaków
może być potraktowane jako błąd. if (!ereg('^[a-zA-Z0-9]+$',
$login)) W powyższym kodzie sprawdzamy, czy zmienna $login skżada się z znaków od a do z, lub A do Z lub 0 do 9. Jeżeli w zmiennej $login wystąpią inne znaki, warunek zostaje spełniony, wyżwietla siż odpowiedni komunikat i nastżpuje zatrzymanie wykonywania kolejnych fragmentów skryptu. Proszę do swojej księgi gości wpisać post,
którego treść będzie składała się z dwustu (lub wiżcej) znaków nie
oddzielonych spacją. Jaki bżdzie efekt wyświetlenia księgi gości $nowatresc=explode(" ",$tresc); O innych sposobach zabezpieczeń od strony skryptu
PHP i konfiguracji serwera znajdziecie Państwo więscej informacji w
kolejnej edycji szkolenia. Tutaj przedstawiono te najważniejsze, bez
których trudno wyobraziż sobie działanie jakiejkolwiek witryny
opartej o skrypty PHP i bazy danych. |
Do zapamiżtania
|
|