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 
 | 
| 
 
 |