Webprogrammering MySQL og PHP Sikkerhet.

Slides:



Advertisements
Liknende presentasjoner
Tabeller av objekter Klassen ArrayList
Advertisements

Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Design av sikre web-applikasjoner
VEILEDNING FOR OPPMELDING TIL ORDINÆR EKSAMEN
Redigering i iKnowBase
Filbehandling (Kapittel 8)
Høgskolen i Oslo Webprogrammering SQL og databaser del 1.
Høgskolen i Oslo Webprogrammering Grunnleggende PHP.
Høgskolen i Oslo Webprogrammering SQL og databaser del 3.
Introduksjon til objektorientert programmering i PHP
Webprogrammering Arrays.
Sikkerhet - bakgrunn og introduksjon til kryptosystemer
Webprogrammering SQL og databaser del 2.
Høgskolen i Oslo Webprogrammering Introduksjon til Java-scripting.
Objektorientert programmering i PHP del 2
Finne prosjekt  lærerikt  database  PHP, Webløsning.
© UNIVERSITETETS SENTER FOR INFORMASJONSTEKNOLOGI UNIVERSITETET I OSLO USIT Side 1 Lasso ved UiO Erlend Garåsen, USIT 2003.
Databasehåndtering med MySQL
1 Øvingsforelesning 7 Kai Olav Ellefsen. 2 I dag… Databaser: Databasedesign og SQL JSP: Koble databasen til nettsiden Kai Olav Ellefsen, NTNU, 2010.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
Prosjekt 45e - WebConcret
Lag og foreninger Dynamisk nettløsning og kalendermodul for foreninger i Steinkjer Kommune, utviklet med PHP og MySQL. Hovedprosjekt HiST våren av.
Reidar Wisløff 3DSU Hovedprosjekt 16E
Registrering av kjemikalier i Kromatografigruppa, Fürst Medisinsk laboratorium. Database laget med bruk av teknologiene PHP, MySQL og Apache Prosjektoppgave.
Hovedprosjekt våren 2005 Test av krypteringsalgoritmer HP 18 Thomas Solem og Steinar Vatn Solem.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
INF150 Programmering mandag 11.9
Høgskolen i Oslo Introduksjon til Informasjons- og kommunikasjonsteknologi (IKT) Bachelorstudium - faglærerutdanning for tospråklige lærere Avdeling for.
Side 1. Side 2 Agenda Begreper Norman ASA Mål og hensikt Teknologi Oversikt over systemet Demonstrasjon av systemet Tekniske løsninger Prosessen Konklusjon.
PRESENTASJON 2008 PRESENTASJON 2008.
MySQL og PHP. MySQL database funksjoner Tilknytning til databasen Flere databasefunksjoner MySQL spørringer Lesing av returnerte datasett Funksjoner som.
JAVASCRIPT I NETTLESEREN. Objekter i nettleseren Objekter som er innebygd i språket Egendefinerte objekter Nettleser objekter HTML objekter.
Livet etter Frontpage og Access Tom Heine Nätt. Agenda Frontpage Hvorfor bytte? Krav til et webutviklingsverktøy Alternative webutviklingsverktøy Dreamweaver.
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Høgskolen i Oslo Webprogrammering Filbehandling i PHP.
Høgskolen i Oslo Web-programmering Feilhåndtering i PHP.
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Webprogrammering Skjema i HTML og PHP.
Høgskolen i Oslo Webprogrammering Java-scripting 2 Klientvalidering.
Dynamiske nettsider PHP Del 4 – Eksterne datakilder.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Databasen II Sesjoner, stored procedures, error handling.
Med hånda i kakeboksen. Oblig 4, cookies, sesjoner, stored procedures, error handling.
1 INF5110 – 23. april, 2013 Svar på noen oppgaver til kap. 8 Beklager noe trykkfeil og rot på forelesningene Håper dette er bedre (lagt ut 24/4) Nå fredag.
1 INF5110 – 23. april, 2013 Noen oppgaver til kap. 8 Dette er en bedre utgave av oppgavene, lagt ut 24. april Nå fredag (26/4): Det blir ikke undervisning.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Pluginmodul for medlemsbehandling KomkartWeb Oppgave 17 Halvor Sæther Berge.
Hovedprosjekt 2005 Oppgavestiller / Veileder Problemstillingen som skal løses Hvorfor ble denne oppgaven valgt Hvordan ble oppgaven løst Teknologi Resultater.
Presentasjon av prosjekt Oppgavestiller: NTNU (Magnar Hole) Oppgave: Opprette lokal brukerdatabase med (PHP & MySQL) Studenter: Christian Dillner Veileder:
1 Aktive websider ved hjelp av PHP- og MySQL-teknologi Videreutvikling av websidene ved Avdeling for helse- og idrettsfag, Høgskolen i Agder.
Introduksjon til sikkerhet Kapittel 8.1 fra Tannenbaum og Steens, ”Distributed Systems”
SMS – System for Byggmakker Lade Gruppe 31E Av Olaf R.A. Nykrem & Audun Håberg.
Trondheim Lytte- og Læresenter. Sammendrag Prosjektet ble iverksatt fordi Trondheim Lytte- og Læresenter så behovet i å ha et elektronisk kundearkiv i.
Klasse: 2HKI Student: Bertil Gjerstad Oppgnr: 25E
Upload av bildefiler Utdrag fra ImageIn Ved Kirsten Klæbo Tirsdag 25/11-03.
1 VervDb Web-basert system utviklet med PHP og MySQL, vervdatabase for Høgskolen i Sør-Trøndelag.
Hovedprosjekt våren Webgrensesnitt mot MySQL Av:Jan Henrik Roten Marius Røstad.
Universal webshop Prosjektgruppe 46E: Ronny Barstrand Stian Eiken
Oversikt Access Hva en bør beherske så langt. Tabeller Felt Typer (heltall, desimaltall, tekst, Boolean) Primary Key.
IT-1.
Gruppe 51E Inger Torp, Edvard Andrè Nilsen, & Janne KB Pedersen
Ә.Тәжібаев “Сырдария ” өлеңі ашық сабақ 7-сынып
Жоба «Сын тұрғысынан ойлау технологиясы арқылы оқушылардың
Қарсылықты бағыныңқы сабақтас
Екпетал мектеп – балабақшасы Ана тілі 2 класс Өткізген: Г
Ашық сабақ Тақырыбы: Отан туралы М.Мақатаев
“Сыни тұрғыдан ойлауға оқыту” модулі сабақтар топтамасында орындаған: бастауыш сынып мұғалімі:Алимбаева Алмаш Иренгалиевна санаты ІІ.
Коучинг тақырыбы: “Оқыту мен оқудағы жаңа әдіс-тәсілдер”
Utskrift av presentasjonen:

Webprogrammering MySQL og PHP Sikkerhet

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

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

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

Sette inn passord <?php include "sql-connect-inc.php"; $passord="Hei og hopp"; $sql = "UPDATE ansatt SET Passord = PASSWORD('$passord') WHERE Fornavn = 'Varg'"; if(mysql_query($sql)) { echo '<br/>* Passordet er lagt inn *<br/>'; } else echo mysql_error();

Sjekke passord <?php include "sql-connect-inc.php"; $sjekk_passord="Hei og hopp"; $sql = "SELECT * FROM ansatt WHERE (Fornavn = 'Varg') AND (Passord = PASSWORD('$sjekk_passord'))"; $resultat = mysql_query($sql); $antall = mysql_num_rows($resultat); if ($antall == 1) { echo "Passordet er korrekt"; } else echo "Passordet er ikke korrekt!";

Sesjonsvariabel for innlogging <?php session_start(); include "sql-connect-inc.php"; $sjekk_passord=$_REQUEST[passord]; $sql = "SELECT * FROM ansatt WHERE (Fornavn = 'Varg') AND (Passord = PASSWORD('$sjekk_passord'))"; $resultat = mysql_query($sql); $antall = mysql_num_rows($resultat); if ($antall == 1) { $_SESSION[”loggetInn”]=true; } else $_SESSION[”loggetInn”]=false;

På hver side ved innlogging <?php session_start(); If (!$_SESSION[”loggetInn”]) { echo ”Du er ikke logget på ! Trykk her for å logge på :”; echo ” <a href="loginn.php">Tilbake</a>”; die(); } // legges inn i include som legges først i alle sidene // Her kommer koden for hva som skal skje dersom man er innlogget

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

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

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

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

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

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

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

Fnutter ved tall Bruk fnutter også ved tall: Her er alder et heltall i databasen. Skriver vi inn ”23 - -” for alder får vi Bruk isteden : 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 > 23 - - AND passord = = ‘dskfgj4905’ $sql = "DELETE * FROM Ansatt WHERE fornavn = '$_REQUEST[Input]' AND alder > ‘$_REQUEST[Alder]’ AND passord = 'dskfgj4905'";

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

SQL injection Ref: www.xckd.com