Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Sichere PHP Anwendung

Diskussion: Sichere PHP Anwendung im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo, hab schonmal bisschen rumgegoogelt zu dem Thema. Wollte dennoch mal ein bisschen rumfragen, wie man seine PHP Anwendungen ...

Antwort
Alt 21.05.08, 14:54   #1 (permalink)
 
Registriert seit: 11.08.05
boehmi Leistung: Facit NTK
boehmi eine Nachricht über ICQ schicken
Likes: 0
Standard Sichere PHP Anwendung

Anzeige

Hallo,

hab schonmal bisschen rumgegoogelt zu dem Thema.

Wollte dennoch mal ein bisschen rumfragen,
wie man seine PHP Anwendungen inkl. Userverwaltung & Login programmiertechnisch & Konfigurationstechnisch dicht gegen XSS, SQL Injection, Datendiebstahl/identitätsklau und anderen Angriffe macht.

1. würde ich jede Get/Post-Eingabe durch diese Funktion schicken:

Code:
function secure_form($data) {
	 return strip_tags(mysql_real_escape_string(trim(stripslashes($data))));
}
2. jede Ausgabe aus einer Datenbank mit htmlspecialchars() versehen.

3. Dateien nicht "direkt" includen, sondern über Aliase mit Switch/Case Anweisung.

4. Loginpasswörter nicht im Klartext, sondern gehasht speichern

5. Loginsystem etc. über $_Session[]

6. SSL Verschlüsselt

7. http://www.heise.de/security/Grundsi...rtikel/96564/3

8. Allgemein so wenig wie möglich Daten beim Client speichern


Setzt die Liste fort ;)
Würdet ihr in der Funktion bei 1. noch was hinzufügen, was ich vergessen habe?

Danke für eure Hilfe
boehmi ist offline   Mit Zitat antworten
Alt 21.05.08, 14:57   #2 (permalink)
Moderator
 
Benutzerbild von xeno
 
Registriert seit: 09.09.04
xeno Leistung: Pentium Ixeno Leistung: Pentium I
xeno eine Nachricht über ICQ schicken
Likes: 76
Standard

ich arbeite mit nem ganzen haufen vhosts im apache, und da override ich gerne noch ein paar php sachen damit ich die nicht global setzen muss. kleines beispiel:

<VirtualHost *:80>
ServerName a.b.c
DocumentRoot /a/b/c
php_admin_flag allow_url_fopen off
php_admin_value open_basedir /a/b/c
php_admin_flag safe_mode on
php_admin_flag safe_mode_gid on
</VirtualHost>

Eventuell kannst du damit noch was anfangen (auch wenns nicht ganz zum thema gehört isses manchmal praktisch ^^)
xeno ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 21.05.08, 15:21   #3 (permalink)
fetzer
Guest
 
Likes:
Standard

Warum nicht (1) und (2) zusammenfassen:
Code:
function secureDataFromUnsecureSource($data) {
  $data=trim(htmlentities($data,ENT_QUOTES));
  if(!get_magic_quotes_gpc())$data=mysql_real_escape_string($data);
  return $data;
}
- Du könntest strike Typen nutzen. D.h. wenn das Datenbankfeld einen Integer-Wert benötigt, übergibst du ihm nur einen Integerwert. Stichwort ist hier casten: $intWert=(int)$charWert;

- Desweiteren wären PHP Data Objects für Datenbankabfragen interessant, da man hier über Bindparam auch relativ einfach absichern kann

- Eine weitere Möglichkeit wäre die Nutzung von mod_secure gegen unzulässige Eingaben.
  Mit Zitat antworten
Alt 21.05.08, 15:38   #4 (permalink)
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard

Ich benutze folgende Zeilen gegen SQL-Injection :

Code:
$ArrayList = array("_GET", "_POST");
foreach($ArrayList as $gblArray) {
	$keys = array_keys($$gblArray);
	foreach($keys as $key) {
		mysql_escape_string(${$gblArray}[$key]);
		strip_tags(${$gblArray}[$key]);
		@$$key = trim(${$gblArray}[$key]);
	}
}
weau ist offline   Mit Zitat antworten
Alt 21.05.08, 16:59   #5 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
das Thema ist viel zu Komplex, um in einer 8. Punkteliste alles abzuhacken.

Gute Seiten zum Thema:
www.php-sicherheit.de (Buch)
www.cms-sicherheit.de (Tutorials)
Elderan ist offline   Mit Zitat antworten
Alt 21.05.08, 17:06   #6 (permalink)
Themenstarter
 
Registriert seit: 11.08.05
boehmi Leistung: Facit NTK
boehmi eine Nachricht über ICQ schicken
Likes: 0
Standard

@xeno: Danke, naja sowas in die Richtung habe ich schon auch mit gemeint

Zitat:
Original von fetzer
Warum nicht (1) und (2) zusammenfassen:
Code:
function secureDataFromUnsecureSource($data) {
  $data=trim(htmlentities($data,ENT_QUOTES));
  if(!get_magic_quotes_gpc())$data=mysql_real_escape_string($data);
  return $data;
}
das wäre schon auch möglich,
allerdings kann man die Daten aus der Datenbank ja dann nicht mehr ohne weiteres außerhalb von der Webapplikationen verwenden.
Zum Beispiel in einem C/C++ Programm.
Kommt dann halt darauf an, ob man das muss.

Danke schonmal für die schnellen Antworten,
immer weiter so
boehmi ist offline   Mit Zitat antworten
Alt 21.05.08, 17:54   #7 (permalink)
Member of Honour
 
Benutzerbild von beavisbee
 
Registriert seit: 22.02.07
beavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium IIIbeavisbee Leistung: Pentium III
beavisbee eine Nachricht über ICQ schicken
Likes: 77
Standard

hier nochmal der Link zu meinem Vortrag, den ich neulich in Internet Technologie gehalten habe:
http://studium.cs-bergann.de/inet/phpsecurity/

dort sind ein paar Szenarien aufgezählt (unsicherer Code + Kommentare, wie sich der Code ausnutzen lässt + Tipps, wie man sowohl programmier-technisch als auch konfig-technisch mehr Sicherheit erreichen kann)

es ist zwar auch nur ganz an der Oberfläche gekratzt (man könnte ja über jede PHP-Konfiguration und ihre Auswirkungen oder über jeden Angriffs-Typ etc. jeweils nen Vortrag halten...), aber vieleicht hilft's dir oder dem ein oder anderem...
beavisbee ist offline   Mit Zitat antworten
Alt 26.05.08, 01:52   #8 (permalink)
Themenstarter
 
Registriert seit: 11.08.05
boehmi Leistung: Facit NTK
boehmi eine Nachricht über ICQ schicken
Likes: 0
Standard

Wären die Funktionen nicht alle außer Kraft gesetzt wenn man Zeichensätze verwendet,
die von den Funktionen nicht unterstützt werden?

Das wäre zwar am Ende ne ziemliche Frickelarbeit, aber es gibt ja genug Leute mit viel Zeit

Kann man mit PHP einen bestimmten Eingabe-Zeichensatz erzwingen bzw. konvertieren?
boehmi ist offline   Mit Zitat antworten
Alt 26.05.08, 02:07   #9 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 443
Standard

Zitat:
Original von boehmi
Kann man mit PHP einen bestimmten Eingabe-Zeichensatz erzwingen bzw. konvertieren?
Du kannst das Charset im Header des ausgelieferten HTML-Codes festlegen.

Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Ausserdem kannst du das Default-Charset in der php.ini definieren.

Siehe dazu z.B. auch http://www.phpwact.org/php/i18n/charsets
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist gerade online   Mit Zitat antworten
Alt 26.05.08, 14:27   #10 (permalink)
Themenstarter
 
Registriert seit: 11.08.05
boehmi Leistung: Facit NTK
boehmi eine Nachricht über ICQ schicken
Likes: 0
Standard

Gibt es eigentlich mittlerweile einen offiziellen Release-Termin für PHP6 ?
Ich konnte nirgends verlässliche Angaben finden.
Mit PHP6 sollten diese Zeichensatz-Probleme ja eigentlich gelöst sein.

Was haltet ihr hiervon?:
http://www.hardened-php.net/home.8.html
boehmi ist offline   Mit Zitat antworten
Alt 26.05.08, 17:22   #11 (permalink)
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von boehmi
Gibt es eigentlich mittlerweile einen offiziellen Release-Termin für PHP6 ?
Ich konnte nirgends verlässliche Angaben finden.
Mit PHP6 sollten diese Zeichensatz-Probleme ja eigentlich gelöst sein.

Was haltet ihr hiervon?:
http://www.hardened-php.net/home.8.html
Was für Zeichensatz Probleme? Bitmuncher hat doch alles gesagt.

Suhosin läuft mittlerweile auch bei mir auf dem Server und es tut seinen Dienst.
Wie man es richtig installiert wurde mir hier im Habo schon erklärt siehe Boardsuche.

LG,weau
weau ist offline   Mit Zitat antworten
Alt 26.05.08, 18:22   #12 (permalink)
 
Benutzerbild von rami
 
Registriert seit: 09.02.08
rami Leistung: Facit NTK
rami eine Nachricht über ICQ schicken rami eine Nachricht über Skype™ schicken
Likes: 0
Standard RE: Sichere PHP Anwendung

Zitat:
1. würde ich jede Get/Post-Eingabe durch diese Funktion schicken:

Code:
function secure_form($data) {
	 return strip_tags(mysql_real_escape_string(trim(stripslashes($data))));
}
viel userstörendes sinnloses. nimm strip_tags raus. ob stripslashes trotz mysql_real_escape_string wirklich nützlich ist, weiß ich nicht.
Zitat:
2. jede Ausgabe aus einer Datenbank mit htmlspecialchars() versehen.
Jopp. Wie gesagt: Um Speicher zu sparen erst bei der ausgabe!
Zitat:
3. Dateien nicht "direkt" includen, sondern über Aliase mit Switch/Case Anweisung.
Zitat:
4. Loginpasswörter nicht im Klartext, sondern gehasht speichern
Für Anfänger die das genauer haben wollen: md5() und sha1() helfen
Zitat:
5. Loginsystem etc. über $_Session[]
Mache ich auch, obwohl ich mittlerweile einen (auch wenns evtl. unsinnig ist) Loginhash aus Zeit, Username und anderen Daten in Session/Cookie und Datenbank speichere und dann gegenprüfe. Da kann der User den Hash ruhig sehen, soller doch den Algorythmus erraten
Zitat:
6. SSL Verschlüsselt
Bietet leider nicht jeder Server.
Schöner Artikel!
Zitat:
8. Allgemein so wenig wie möglich Daten beim Client speichern
Kommt finde ich auf die Daten an
__________________
rami ist offline   Mit Zitat antworten
Alt 27.05.08, 21:47   #13 (permalink)
 
Registriert seit: 20.01.03
Zwirni Leistung: Z3
Likes: 0
Standard RE: Sichere PHP Anwendung

Zitat:
6. SSL Verschlüsselt
SSL-Clientzertifikate und darauf basierende Logins. Am besten noch mit einem nicht selbst erstellten Zertifikat. Habe ich die letzten Wochen bei jemandem einrichten dürfen.
Zwirni ist offline   Mit Zitat antworten
Alt 29.05.08, 22:20   #14 (permalink)
Themenstarter
 
Registriert seit: 11.08.05
boehmi Leistung: Facit NTK
boehmi eine Nachricht über ICQ schicken
Likes: 0
Standard

Zitat:
Original von weau
Was für Zeichensatz Probleme? Bitmuncher hat doch alles gesagt.
Das schon, aber mit PHP6 kann man sich diese Umwege dann wohl sparen.
boehmi ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Sichere PHP Anwendung
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sichere Homeserverlösung xblax Linux/UNIX 2 07.05.09 21:46
"sichere HP" erstellen ghost Webmaster-Security 13 23.08.07 18:25
C++-anwendung macht noch eine anwendung Blacki Code Kitchen 5 29.07.06 16:26
wie sichere ich outlook2000? chäkka Die Problemzone 3 14.12.03 01:48


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61