Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort
Vorwort
1 PEAR – Einführung
2 Authentication
3 Caching
4 Date and Time
5 File Formats
6 HTTP
7 Internationalization
8 Mail
9 Networking
10 PHP
11 Text
12 Web Services
13 Benchmarking
14 Configuration
15 Database
16 File System
17 HTML
18 Images
19 Logging
20 Math
21 Numbers
22 Tools and Utilities
23 XML
24 Selbst Pakete erstellen
25 PECL
Index
Ihre Meinung?

Spacer
 <<   zurück
PHP PEAR von Carsten Möhrke
Anwendung und Entwicklung – Erweiterungen für PHP schreiben
Buch: PHP PEAR

PHP PEAR
798 S., 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-580-0
gp 11 Text
  gp 11.1 Text_Password
  gp 11.2 Text_CAPTCHA
  gp 11.3 Text_Wiki
  gp 11.4 Text_Highlighter
  gp 11.5 Text_Diff

11 Text

Um den Umgang mit Texten zu vereinfachen, sind in der Kategorie »Text« einige hilfreiche Pakete zu finden. Besonders nützlich finde ich hier die Pakete »Text_Wiki«, mit dem Sie sehr schnell ein eigenes Wiki erstellen können, und »Text_Diff«, mit dem Sie Dateien miteinander vergleichen können.


Rheinwerk Computing

11.1 Text_Password  toptop


Besprochene Version: 1.0 Lizenz: PHP-Lizenz
Klassendatei(en): Text/Password.php

Text_Password ist ein Paket, das Ihnen die Arbeit abnimmt, selbst eine Routine zum Generieren von Passwörtern ersinnen zu müssen. Dies ist immer dann hilfreich, wenn Sie beispielsweise eine Funktionalität benötigen, um automatisch ein Passwort zu erstellen, wenn sich ein neuer User an einem System anmeldet, oder z. B. auch dann, wenn ein User sein Passwort vergessen hat und Sie ein neu generiertes Passwort an seine E-Mail-Adresse senden wollen.

Das Paket ist einfach gehalten und besteht aus vier Methoden, die alle statisch aufgerufen werden können. Im einfachsten Fall können Sie ein neues Passwort mit den folgenden Zeilen erhalten:

require_once ('Text/Password.php'); 
echo Text_Password::create();

Rufen Sie die Methode create() ohne Parameter direkt auf, generiert sie einen String, der zehn Zeichen lang ist und vor allem ausgesprochen werden kann. Ein solches Passwort kann beispielsweise phiasiokoj lauten. Die Passwörter werden auf Basis von Zufallszahlen generiert, so dass sie mit größter Wahrscheinlichkeit einzigartig sind. Die Methode akzeptiert bis zu drei optionale Parameter, von denen der erste die Länge der zurückgegebenen Strings beeinflusst.

Vielleicht sind Sie gerade darüber gestolpert, dass das Passwort »aussprechbar« ist. Hierbei handelt es sich um ein recht wichtiges Kriterium für Passwörter. Kann ein Benutzer sein Kennwort nicht aussprechen, ist es sehr schwer für ihn zu merken, daher sind aussprechbare Varianten beliebter. Nichtsdestotrotz können Sie die Methode auch nutzen, um Passwörter zu generieren, die nicht aussprechbar sind. Dies wird über den zweiten Parameter gesteuert, den die Methode akzeptiert. Hier können Sie entweder ein 'unpronounceable' oder ein 'pronounceable' übergeben. Im ersten Fall wird dann ein Geheimwort generiert, das mit größter Wahrscheinlichkeit nicht ausgesprochen werden kann. Ein Aufruf wie Text_Password::create(8.'unpronounceable') könnte dann z. B. ein Passwort wie %T21SPNa generieren. Wie Sie schon sehen, können hier nicht nur Buchstaben und Zahlen, sondern auch Sonderzeichen enthalten sein. Die Autoren des Pakets haben auch zugelassen, dass Zeichen, die sich sehr ähnlich sind, wie das kleine L und das große i genutzt werden. Sollten diese Zeichen in der von Ihnen gewählten Schriftart also zweideutig interpretiert werden können, sollten Sie diese nachträglich ersetzen.

Mit dem dritten Parameter, den die Methode unterstützt, können Sie allerdings noch beeinflussen, welche Zeichen zum Generieren des Passworts genutzt werden dürfen. Dieser dritte Parameter wird nur dann ausgewertet, wenn Sie ein Passwort erstellen lassen, das nicht ausgesprochen werden kann. Andernfalls wird er ignoriert.

Geben Sie den String als Parameter 'alphanumeric' an, werden nur Zahlen und Buchstaben (groß und klein) genutzt, und mit 'numeric' legen Sie fest, dass nur die Ziffern von 0 bis 9 Verwendung finden. Sie können allerdings auch eine frei definierbare Menge von Zeichen angeben, bei der die einzelnen Zeichen jeweils durch ein Komma zu trennen sind. In dem Fall wird das Ergebnis nur aus diesen Zeichen generiert.

require_once "Text/Password.php"; 
echo Text_Password::create(15,'unpronounceable', 
                            'a,A,b,B,c,C,x,X,0,1,2,3,@');
// Generiert etwas wie: 0A2B1@b3a21cXCA

Die Methode create() existiert noch in einer zweiten Variante, als createMultiple(). Mit ihr können Sie mehrere Passwörter auf einmal erzeugen. Grundsätzlich unterstützt sie dieselben Parameter wie create(). Der Unterschied besteht nur darin, dass vor den schon erwähnten Parametern noch definiert werden muss, wie viele Passwörter erstellt werden sollen, die dann in einem Array zurückgeliefert werden.

require_once "Text/Password.php"; 
$pwds = Text_Password::createMultiple(10,8); 
// $pwds enthaelt 10 aussprechbare Passwoerter, à 8 Zeichen

Die zweite Gruppe von Methoden, die das Paket enthält, besteht aus createFromLogin() und createMultipleFromLogin(). Diese beiden Methoden generieren ein Passwort auf Basis eines gegebenen Logins, wobei die erste ein Passwort generiert und die zweite mehrere.

createFromLogin() bekommt als ersten Parameter das Login übergeben, das als Basis dienen soll, und möchte noch mit einem zweiten Wert, einem String, die Information übergeben bekommen, wie das Passwort kodiert werden soll. createMultipleLogin() benötigt natürlich entsprechend mehrere Logins die in Form eines Arrays als Basis für die Passwörter übergeben werden. Bei einigen Verfahren wird des Weiteren ein dritter Parameter verlangt, der den Kodierungsvorgang beeinflusst.

require_once "Text/Password.php"; 
$login="Klaus"; 
echo Text_Password::createFromLogin($login,'reverse'); 
// gibt sualK aus

Listing 11.1 Passwort aus Login generieren

Wenn Sie wie in diesem Beispiel ein 'reverse' übergeben, wird das Login einfach umgedreht und als Passwort genutzt. Ein solches Passwort ist zwar sehr schwach und kann leicht geknackt werden, aber es hat den Vorteil, dass es leicht zu merken ist.

In Tabelle 11.1 finden Sie alle implementierten Verfahren:

[Zum jetzigen Zeitpunkt werden die XOR-Operation und die ASCCI-Rotation auf Basis des kompletten ASCII-Codes (0–255) durchgeführt. Das kann dazu führen, dass Sonderzeichen oder Whitespaces im resultierenden Passwort enthalten sind.
Tabelle 11.1 Mögliche Kodierungsverfahren
Verfahren Beschreibung
reverse Dreht das Login um.
rot13 Ersetzt den jeweiligen Buchstaben durch den 13. darauf folgenden Buchstaben: A -> N, b -> o …
rotx Erwartet einen weiteren Parameter, der definiert, durch welchen darauf folgenden Buchstaben der aktuelle ersetzt wird. Bei 1 wird a -> b ersetzt und b -> c etc. (Großbuchstaben werden in Kleinbuchstaben umgewandelt A -> b.)
rotx++ Akzeptiert einen Integer-Parameter und ersetzt den ersten Buchstaben durch den darauf folgenden Buchstaben, der durch den Parameter definiert wird. Bei jedem weiteren Buchstaben wird der Offset um eins erhöht (z. B. det -> egw).
rotx-- Wie rotx++, nur in negativer Richtung.
xor Erwartet ein beliebiges weiteres Zeichen als Parameter und verknüpft jedes Zeichen des Logins mithilfe einer XOR-Operation mit dem zusätzlichen Zeichen.
ascii_rotx Wie rotx, rotiert allerdings auf Basis von ASCII-Codes.
ascii_rotx++ Wie rotx++, rotiert allerdings auf Basis von ASCII-Codes.
ascii_rotx-- Wie rotx--, rotiert allerdings auf Basis von ASCII-Codes.
shuffle Vertauscht die Buchstaben nach dem Zufallsprinzip.

]
 <<   zurück
     
  Zum Katalog
Zum Katalog: PHP PEAR
PHP PEAR
Jetzt bestellen!
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: PHP 5.6 und MySQL 5.7






 PHP 5.6 und
 MySQL 5.7


Zum Katalog: Einstieg in PHP 5.6 und MySQL 5.6






 Einstieg in PHP 5.6
 und MySQL 5.6


Zum Katalog: Responsive Webdesign






 Responsive Webdesign


Zum Katalog: Moderne Websites entwickeln






 Moderne Websites
 entwickeln


Zum Katalog: MySQL 5.6






 MySQL 5.6


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de