Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---------------------------------------------------
- PHP:
- ---------------------------------------------------
- Parameterübergabe:
- GET ist aus Sicherheitstechnischen Gründen schlecht:
- 1. Schaden durch unerwartete Eingaben
- 2. Variablen können ausgedachte Werte haben
- 3. Variablen können absichtlichen schädlichen Inhalt haben
- Bei COOKIE ist die Maniplation leichter zu erkennen, daher nutzbar.
- ---------------------------------------------------
- SQL Injection:
- ---------------------------------------------------
- Ensteht dadurch, dass Eingaben nicht ausreichend überprüft werden.
- Anwender versucht Datenbankbefehle einzuschleusen
- 1. Datentypen prüfen
- 2. Zeichenketten dürfen keine ;' usw enthalten
- Gegenmaßnahmen:
- Rechte der DB Nutzer einschränken
- bindParam -> Anweisung und Text werden getrennt zur DB versendet
- bindet Text an das SQL Statement und fügt den reinen Text in die DB ein.
- ---------------------------------------------------
- Sessions:
- ---------------------------------------------------
- Gründe für Sessions:
- - Aufwedig errechnete Daten speichern
- - Zwichenspeichern von Daten
- Gründe gegen Sessions:
- - Performance Verluste
- - Server erkennt das Ende einer Session nicht, wie auch?
- - Lesezeichen mit Session ids sind schlecht
- - Mit Cookies ist nur eine Session pro Client möglich
- - Sessiondiebstahl
- - Speicherung von Daten mitels Sessions auf dem Server
- - Jeder Benutzer erhält eigene Session + Session ID (eindeutig)
- 1. Session starten
- session_start();
- 2. Neue Session Variable anlegen:
- $_SESSION['jahr'] = 2008
- 3. Link auf 2. Datei ggf Session ID mit übertragen
- echo '<a href="session2.php?' .SID. '"> Link auf xyz </a';
- echo '<a href="session2.php?PHPSESSID='.session_id().'"> Link auf xyz </a';
- SID ist leer wenn mit Cookies gearbeitet wird
- 4. In der Neuen Datei:
- Session starten
- session_start();
- echo $_SESSION['jahr'];
- ggf Session beenden:
- session_destroy();
- Löscht alle Daten die mit der aktuellen Session in Verbindung stehen
- Löscht nicht das Cookie
- ---------------------------------------------------
- Authentifizierung:
- ---------------------------------------------------
- 1. Mit HTTP und Webserver
- User Liste in Htacces Datei
- 2. Mit HTTP und PHP
- <?php
- if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
- ($_SERVER['PHP_AUTH_USER'] != 'michael') || ($_SERVER['PHP_AUTH_PW'] != 'passwort')) {
- header("WWW-Authenticate:Basic realm=\"Login zum Webshop\"");
- header("HTTP/1.0 401 Unauthorized");
- die("Anmeldung Fehlgeschlagen, überprüfen Sie Ihre Logindaten)";
- }
- echo '<?xml version="1.0" encoding="utf-8" ?>';
- ?>
- 3. Mit HTML Formularen und PHP und Datenbank
- Logindatei:
- <form action="Kasse.php" method="post">
- <fieldset style="width:80px; border:2px">
- <legend>Login:</legend>
- <p>Username: <br/> <input name="user" type="text" size="25" maxlength="25"/></p>
- <p>Passwort: <br/> <input name="pw" type="password" size="25" maxlength="25"/></p>
- <input type="submit" value="Zur Kasse"/>
- </fieldset>
- </form>
- Kasse.php:
- <?php
- $db = new PDO('mysql:host=localhost;dbname=s7','s7','Thoomae3');
- if (isset($_POST['user']) && isset($_POST['pw'])){
- $stmt = $db->prepare('SELECT * from login WHERE user LIKE :user');
- $stmt->bindParam(':user',$_POST['user']);
- $stmt->execute();
- $row = $stmt->fetch(PDO::FETCH_OBJ);
- # crypt methode wird verwendet, zwei zeichen stehen für DES
- $password=crypt($_POST['pw'],"xy");
- if ($row->passwort != $password ){
- echo "Login fehlgeschlagen";
- exit;
- }
- }
- else {
- echo "Sie sind nicht eingeloggt!";
- echo "<a href='Wahrenkorb.php'>Hier anmelden</a>";
- exit;
- }
- ?>
- ---------------------------------------------------
- SSL:
- ---------------------------------------------------
- - Vetraulichkeit von Informationen
- - Integrität
- - Authentizität
- ---------------------------------------------------
- Sicherheit von Webanwendungen
- ---------------------------------------------------
- 5. Semantik
- - PopUps erleichtern Phishing
- - evt Fälschung der Webseite
- - Infos erleichtern Social Engeneerung Angriffe
- 4. Logik
- - Nachlässige "Passwort Vergessen" Funktion
- - sichere Passwörter müssen genommen werden
- 3. Implementierung
- - SQL Injection
- - Session Riding
- 2. Technologie
- - Unverschlüsselte Übertragung
- - Zu laschen Authenzifizierungsverfahren
- 1. System
- - Fehler in der Serverkonfiguration
- - "Known vulnerabilities"
- - Falsche Rechte des DB Benutzers
- 0. Netzwerk / Host
- - Fehler in der Server- Netzwerkkonfiguration
- ---------------------------------------------------
- Schutzmaßnahmen:
- ---------------------------------------------------
- - Eingaben filtern (whitelist / blacklist)
- - Ausgaben filtern
- - Verarbeitung stoppen aber korrekte Verarbeitung vortäuschen
- - bindParam
- - Session Management
- - Bruteforce / Enumeration verhindern durch Zeitverzögerung
- - Captchas
- - Sichere PW erzwingen
- - SSL
- - Keine Kommentare im Xhtml
- - Monitoring
Add Comment
Please, Sign In to add comment