Guest User

Untitled

a guest
Jun 22nd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.07 KB | None | 0 0
  1. ---------------------------------------------------
  2. PHP:
  3. ---------------------------------------------------
  4.  
  5. Parameterübergabe:
  6. GET ist aus Sicherheitstechnischen Gründen schlecht:
  7. 1. Schaden durch unerwartete Eingaben
  8. 2. Variablen können ausgedachte Werte haben
  9. 3. Variablen können absichtlichen schädlichen Inhalt haben
  10.  
  11. Bei COOKIE ist die Maniplation leichter zu erkennen, daher nutzbar.
  12.  
  13. ---------------------------------------------------
  14. SQL Injection:
  15. ---------------------------------------------------
  16.  
  17. Ensteht dadurch, dass Eingaben nicht ausreichend überprüft werden.
  18. Anwender versucht Datenbankbefehle einzuschleusen
  19. 1. Datentypen prüfen
  20. 2. Zeichenketten dürfen keine ;' usw enthalten
  21.  
  22. Gegenmaßnahmen:
  23. Rechte der DB Nutzer einschränken
  24. bindParam -> Anweisung und Text werden getrennt zur DB versendet
  25. bindet Text an das SQL Statement und fügt den reinen Text in die DB ein.
  26.  
  27. ---------------------------------------------------
  28. Sessions:
  29. ---------------------------------------------------
  30.  
  31. Gründe für Sessions:
  32. - Aufwedig errechnete Daten speichern
  33. - Zwichenspeichern von Daten
  34.  
  35. Gründe gegen Sessions:
  36. - Performance Verluste
  37. - Server erkennt das Ende einer Session nicht, wie auch?
  38. - Lesezeichen mit Session ids sind schlecht
  39. - Mit Cookies ist nur eine Session pro Client möglich
  40. - Sessiondiebstahl
  41.  
  42.  
  43. - Speicherung von Daten mitels Sessions auf dem Server
  44. - Jeder Benutzer erhält eigene Session + Session ID (eindeutig)
  45.  
  46. 1. Session starten
  47. session_start();
  48.  
  49. 2. Neue Session Variable anlegen:
  50. $_SESSION['jahr'] = 2008
  51.  
  52. 3. Link auf 2. Datei ggf Session ID mit übertragen
  53. echo '<a href="session2.php?' .SID. '"> Link auf xyz </a';
  54. echo '<a href="session2.php?PHPSESSID='.session_id().'"> Link auf xyz </a';
  55. SID ist leer wenn mit Cookies gearbeitet wird
  56.  
  57. 4. In der Neuen Datei:
  58. Session starten
  59. session_start();
  60. echo $_SESSION['jahr'];
  61.  
  62. ggf Session beenden:
  63. session_destroy();
  64. Löscht alle Daten die mit der aktuellen Session in Verbindung stehen
  65. Löscht nicht das Cookie
  66.  
  67. ---------------------------------------------------
  68. Authentifizierung:
  69. ---------------------------------------------------
  70.  
  71. 1. Mit HTTP und Webserver
  72. User Liste in Htacces Datei
  73.  
  74. 2. Mit HTTP und PHP
  75. <?php
  76.  
  77. if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
  78. ($_SERVER['PHP_AUTH_USER'] != 'michael') || ($_SERVER['PHP_AUTH_PW'] != 'passwort')) {
  79. header("WWW-Authenticate:Basic realm=\"Login zum Webshop\"");
  80. header("HTTP/1.0 401 Unauthorized");
  81. die("Anmeldung Fehlgeschlagen, überprüfen Sie Ihre Logindaten)";
  82. }
  83.  
  84. echo '<?xml version="1.0" encoding="utf-8" ?>';
  85. ?>
  86.  
  87. 3. Mit HTML Formularen und PHP und Datenbank
  88. Logindatei:
  89.  
  90. <form action="Kasse.php" method="post">
  91. <fieldset style="width:80px; border:2px">
  92. <legend>Login:</legend>
  93. <p>Username: <br/> <input name="user" type="text" size="25" maxlength="25"/></p>
  94. <p>Passwort: <br/> <input name="pw" type="password" size="25" maxlength="25"/></p>
  95. <input type="submit" value="Zur Kasse"/>
  96. </fieldset>
  97. </form>
  98.  
  99. Kasse.php:
  100.  
  101. <?php
  102. $db = new PDO('mysql:host=localhost;dbname=s7','s7','Thoomae3');
  103.  
  104. if (isset($_POST['user']) && isset($_POST['pw'])){
  105. $stmt = $db->prepare('SELECT * from login WHERE user LIKE :user');
  106. $stmt->bindParam(':user',$_POST['user']);
  107. $stmt->execute();
  108. $row = $stmt->fetch(PDO::FETCH_OBJ);
  109.  
  110. # crypt methode wird verwendet, zwei zeichen stehen für DES
  111. $password=crypt($_POST['pw'],"xy");
  112. if ($row->passwort != $password ){
  113. echo "Login fehlgeschlagen";
  114. exit;
  115. }
  116. }
  117. else {
  118. echo "Sie sind nicht eingeloggt!";
  119. echo "<a href='Wahrenkorb.php'>Hier anmelden</a>";
  120. exit;
  121. }
  122. ?>
  123.  
  124. ---------------------------------------------------
  125. SSL:
  126. ---------------------------------------------------
  127. - Vetraulichkeit von Informationen
  128. - Integrität
  129. - Authentizität
  130.  
  131. ---------------------------------------------------
  132. Sicherheit von Webanwendungen
  133. ---------------------------------------------------
  134. 5. Semantik
  135. - PopUps erleichtern Phishing
  136. - evt Fälschung der Webseite
  137. - Infos erleichtern Social Engeneerung Angriffe
  138.  
  139. 4. Logik
  140. - Nachlässige "Passwort Vergessen" Funktion
  141. - sichere Passwörter müssen genommen werden
  142.  
  143.  
  144. 3. Implementierung
  145. - SQL Injection
  146. - Session Riding
  147.  
  148. 2. Technologie
  149. - Unverschlüsselte Übertragung
  150. - Zu laschen Authenzifizierungsverfahren
  151.  
  152. 1. System
  153. - Fehler in der Serverkonfiguration
  154. - "Known vulnerabilities"
  155. - Falsche Rechte des DB Benutzers
  156.  
  157. 0. Netzwerk / Host
  158. - Fehler in der Server- Netzwerkkonfiguration
  159.  
  160. ---------------------------------------------------
  161. Schutzmaßnahmen:
  162. ---------------------------------------------------
  163. - Eingaben filtern (whitelist / blacklist)
  164. - Ausgaben filtern
  165. - Verarbeitung stoppen aber korrekte Verarbeitung vortäuschen
  166. - bindParam
  167. - Session Management
  168. - Bruteforce / Enumeration verhindern durch Zeitverzögerung
  169. - Captchas
  170. - Sichere PW erzwingen
  171. - SSL
  172. - Keine Kommentare im Xhtml
  173. - Monitoring
Add Comment
Please, Sign In to add comment