svn: /phpdoc/de/trunk/security/ database.xml filesystem.xml

[email protected] (Christoph Michael Becker)
Newsgroups php.doc.de
Message-ID <[email protected]>
cmb                                      Tue, 30 Jan 2018 16:25:49 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=344117

Log:
Sync with EN

Changed paths:
    U   phpdoc/de/trunk/security/database.xml
    U   phpdoc/de/trunk/security/filesystem.xml

Modified: phpdoc/de/trunk/security/database.xml
===================================================================
--- phpdoc/de/trunk/security/database.xml	2018-01-30 16:03:24 UTC (rev 344116)
+++ phpdoc/de/trunk/security/database.xml	2018-01-30 16:25:49 UTC (rev 344117)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 325889 Maintainer: hholzgra Status: ready -->
+<!-- EN-Revision: 339619 Maintainer: hholzgra Status: ready -->
 <!-- Credits: tom -->
   <chapter xml:id="security.database" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
    <title>Datenbank - Sicherheit</title>
@@ -113,18 +113,68 @@
      vor dem Speichern, und entschlüsselt diese wieder beim Erhalt. Siehe die
      Verweise für weitere Beispiele, wie Verschlüsselung arbeitet.
     </simpara>
-    <simpara>
-     Im Fall von wirklich versteckten Daten, wenn deren unverfälschte
-     Repräsentation nicht nötig ist (z.B. keine Anzeige), ist hashing ebenfalls
-     überlegenswert. Das bekannte Beispiel für Hashing ist das Speichern des
-     kryptographischen Hashs eines Passwortes in einer Datenbank, anstatt des Passwortes selbst.
-     Siehe auch <function>crypt</function>.
-    </simpara>
-    <example>
-     <title>Verwenden eines hashed Passwortfeldes</title>
-     <programlisting role="php">
+
+    <sect2 xml:id="security.database.storage.hashing">
+     <title>Hashing</title>
+     <simpara>
+      Im Fall von wirklich versteckten Daten, wenn deren unverfälschte
+      Repräsentation nicht nötig ist (z.B. keine Anzeige), ist Hashing ebenfalls
+      überlegenswert. Das bekannte Beispiel für Hashing ist das Speichern des
+      kryptographischen Hashs eines Passwortes in einer Datenbank, anstatt des Passwortes selbst.
+     </simpara>
+     <simpara>
+      In PHP 5.5 oder neuer bieten die <link
+      linkend="ref.password">Passwort</link>-Funktionen eine bequeme Möglichkeit
+      sensible Daten zu hashen und mit diesen Hashes zu arbeiten. In PHP 5.3.7+
+      kann die <link xmlns:xlink="http://www.w3.org/1999/xlink"
+      xlink:href="&url.password.compat;">password_compat</link>-Bibliothek
+      verwendet werden.
+     </simpara>
+     <simpara>
+      <function>password_hash</function> wird verwendet, um eine gegebene
+      Zeichenkette unter Verwendung des stärksten zurzeit verfügbaren
+      Algorithmus zu hashen, und <function>password_verify</function> prüft, ob
+      ein gegebenes Passwort mit dem Hash, der in der Datenbank gespeichert ist,
+      übereinstimmt.
+     </simpara>
+     <example>
+      <title>Hashen eines Passwortfeldes</title>
+      <programlisting role="php">
 <![CDATA[
-// Speichern des Passwort hash
+<?php
+
+// Speichern des Passwort-Hash
+$query  = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
+            pg_escape_string($username),
+            password_hash($password, PASSWORD_DEFAULT));
+$result = pg_query($connection, $query);
+
+// Abfragen, ob der User das richtige Passwort übermittelt hat
+$query = sprintf("SELECT pwd FROM users WHERE name='%s';",
+            pg_escape_string($username));
+$row = pg_fetch_assoc(pg_query($connection, $query));
+
+if ($row && password_verify($password, $row['pwd'])) {
+    echo 'Willkommen, ' . htmlspecialchars($username) . '!';
+} else {
+    echo 'Authentifikation für ' . htmlspecialchars($username) . 'fehlgeschlagen.';
+}
+
+?>
+]]>
+      </programlisting>
+     </example>
+     <simpara>
+      In älteren PHP-Versionen kann dies unter Verwendung von
+      <function>crypt</function> erreicht werden.
+     </simpara>
+     <example>
+      <title>Hashen eines Passworts unter Verwendung von <function>crypt</function></title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+
+// Speichern des Passwort-Hash
 // $random_chars z.B. unter Verwendung von /dev/random abgerufen
 $query  = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
             pg_escape_string($username),
@@ -131,7 +181,7 @@
             pg_escape_string(crypt($password, '$2a$07$' . $random_chars . '$')));
 $result = pg_query($connection, $query);

-// Afragen, ob der User das richtige Passwort übermittelt hat
+// Abfragen, ob der User das richtige Passwort übermittelt hat
 $query = sprintf("SELECT pwd FROM users WHERE name='%s';",
             pg_escape_string($username));
 $row = pg_fetch_assoc(pg_query($connection, $query));
@@ -144,8 +194,9 @@

 ?>
 ]]>
-     </programlisting>
-    </example>
+      </programlisting>
+     </example>
+    </sect2>
    </sect1>

    <sect1 xml:id="security.database.sql-injection">

Modified: phpdoc/de/trunk/security/filesystem.xml
===================================================================
--- phpdoc/de/trunk/security/filesystem.xml	2018-01-30 16:03:24 UTC (rev 344116)
+++ phpdoc/de/trunk/security/filesystem.xml	2018-01-30 16:25:49 UTC (rev 344117)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 297645 Maintainer: hholzgra Status: ready -->
+<!-- EN-Revision: 336910 Maintainer: hholzgra Status: ready -->
 <!-- Credits: tom -->
   <chapter xml:id="security.filesystem" xmlns="http://docbook.org/ns/docbook">
    <title>Dateisystem - Sicherheit</title>
@@ -91,7 +91,7 @@
 <?php
 // löscht eine Datei von der Festplatte, auf die
 // der PHP user Zugriff hat.
-$username = $_SERVER['REMOTE_USER']; // using an authentication mechanisim
+$username = $_SERVER['REMOTE_USER']; // using an authentication mechanism
 $userfile = basename($_POST['user_submitted_filename']);
 $homedir  = "/home/$username";
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.