Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Høgskolen i Oslo Webprogrammering MySQL og PHP Sikkerhet.

Liknende presentasjoner


Presentasjon om: "Høgskolen i Oslo Webprogrammering MySQL og PHP Sikkerhet."— Utskrift av presentasjonen:

1 Høgskolen i Oslo Webprogrammering MySQL og PHP Sikkerhet

2 I dag l Noen sikkerhetsaspekter –Kryptering av passord –Innlogging / sjekk –SQL injection l Gjennomgang av kode l Jobbe med oblig 2 l Prosjektet er lagt ut l Ingen egen ukeoppgave

3 Bruk av passord l Bør kryptere passordet i databasen l Bruker en såkalt hash-funksjon l Lager en kryptert string av en annen string l MYSQL funksjon : PASSWORD l Eks : PASSWORD(”Hei og hopp”); –*633583B61FDBB58177D561105AED377DA821A 0CE l For sjekk må passordet inn også ”hash’es”

4 Bruk av passord forts. PASSWORD(”Hei og hopp”); *633583B61FDBB58177D561105AED377DA821A0CE Database INSERT PASSWORD(”Hei og hopp 1 ”); SELECT *633583B61FDBB58177D561105AED377DA821A0CE Legge inn passordet: Sjekke passordet: Sjekk om samme hash If() *21A9A0A6D7968C641B451D49BE4F502562CE070D 40 hex-byte

5 Sette inn passord

6 Sjekke passord

7 Sesjonsvariabel for innlogging

8 På hver side ved innlogging

9 Alternative hash-funksjoner l Password funksjonen er en MySQL funksjon og har en lengde på 40 hex-tegn. l Enkel å bruke når passord skal lagres i databasen l Dersom hash skal lagres på fil må det brukes en php-funksjon –md5(”string”); –Denne har en lengde på 32 hex-tegn

10 Alternative hash-funksjoner l Men MD5 har en forholdsvis kort hash Alternativt sha 1 som har en 40 char hex hash l Kan bruke den generelle hash-funksjonen i PHP for å lage lengre hash’er –Hash(”algoritme”, ”string”); l Algoritme kan være f.eks –sha256 : 64 char hex –sha512 :128 char hex

11 SQL injection l Sikre at ingen kan skrive inn noe skadelig kode i input-felt l -- betyr kommentar i SQL l Eks: l SELECT * FROM Kunde WHERE navn = ’Tor’ - - her er en kommentar

12 SQL injection l Eks, gitt sjekk for passord: –SELECT * FROM bruker WHERE navn = ’$_REQUEST[navn]’ AND passord = ”fd6574b”; l Hva skjer dersom vi i navnefeltet skriver et kjent navn: Ola’- - _ (mellomrom tilslutt) –SELECT * FROM bruker WHERE navn = ’Ola’ - - _’ l Passordet har da ingen ting å si (kommentert ut)

13 SQL injection i PHP l Dette kan unngås ved å legge ”escape-tegn” ved enkelt og dobbelt fnutter før select-setninger. l F.eks bruk funksjonen: –$navnEsc= mysql_escape_string ($_REQUEST[’navn’]); –SELECT * FROM bruker WHERE navn = ’$navnEsc’ AND passord = ”fd6574b”; l Resultat: –Input : Ola’- - –SELECT * FROM bruker WHERE navn = ’Ola\’ - -’ AND passord = ”fd6574b”;

14 Magic quotes l En annen måte er å sette dette i PHP ved hjelp av ”Magic quotes”. Da blir fnutter automatisk ”escapet” med \ (dvs. ’ blir \’). l Denne muligheten kom i PHP versjon l Versjon med Magic quotes kjøres på cube (default i php.ini). l Tas vekk i versjon 6.0.0! l Dvs. ikke sats på Magic quotes!

15 Magic quotes l Funksjon for å sjekke om denne er satt i PHP.INI –get_magic_quotes_gpc() (returnerer true/false) l Eksempel: if(!get_magic_quotes_gpc()) { $Fornavn= mysql_escape_string($_REQUEST['fornavn']); } else { $Fornavn = $_REQUEST['fornavn']; } echo $Fornavn;

16 Fnutter ved tall l Bruk fnutter også ved tall: l Her er alder et heltall i databasen. l Skriver vi inn ”23 - -” for alder får vi l Bruk isteden : l Da vil tallet håndteres som en string! –Og det godtas av databasesystemet (konverterer til heltall) $sql = "DELETE * FROM Ansatt WHERE fornavn = '$_REQUEST[Input]' AND alder > $_REQUEST[Alder] AND passord = 'dskfgj4905'"; DELETE * FROM Ansatt WHERE fornavn = ‘Ole‘ AND alder > AND passord = = ‘dskfgj4905’ $sql = "DELETE * FROM Ansatt WHERE fornavn = '$_REQUEST[Input]' AND alder > ‘$_REQUEST[Alder]’ AND passord = 'dskfgj4905'";

17 Unngå SQL injection: l Ved input bruk : –mysql_escape_string(); –$db->escape_string(); (MySQLi) l Ikke sats på at Magic Quotes er satt –Sjekk med get_magic_quotes_gpc() l Bruk fnutter også ved tall!

18 SQL injection Ref:


Laste ned ppt "Høgskolen i Oslo Webprogrammering MySQL og PHP Sikkerhet."

Liknende presentasjoner


Annonser fra Google