Link wär cool - zumindest teilweiße![]()
Hallo,
ich arbeite zurzeit an ein kleines News "Script". Mit den Backend bin ich schon fast Fertig. Und wollte das nun auf Sicherheit Testen lassen.
Da ich nicht die "Hacker" Methoden kenne, wollte ich fragen ob jemand mal das Admin-Panel auf Sicherheitslücken Testen kann. Also Uneingeloggt ins Panel etc.
Paar Daten zum Script:
-Teilweiße OOP
-PHP 4/5
-MySQL 4/5
-Templates
etc.
Wenn noch irgendwelche Fragen sind, könnt ihr sie gerne stellen.
Wäre froh wenn sich jemand melden könnte
PS: Ich hoffe ich bin im richtigen Bereich![]()
Geändert von Saphir (11.04.2009 um 19:58 Uhr)
Also, wenn leute bereit sind es zu "testen" schicke ich den ein Download Link. Damit sie es Testen können![]()
Mach es doch oeffentlich. So ist es auch fuer Gelegenheitstester viel einfacher.
Gruss Guin
Mein Blog
Fänd ich auch. Dabei bin ich trotzdem![]()
...Meine Meinung
Ich sitze auch grad gelangweilt rum...
Wo ist der Test...![]()
Hier ist der Test
Wenn irgendwas nicht Funktioniert sagt mir bescheid. Bin grad selber bischen durcheinander. Da ich ne neue Funktion reingebaut habe.
http://cms.teamsw.bplaced.net/php/Red_Line_b.rar
Ich hab mal kurz register.php und user.php überflogen, ohne tiefer in den Code zu schauen. Da sind mir einige unschöne Sachen aufgefallen.
Wieso verbietest Du dem User Zeichen wie / $ ; : . _ ? | usw. für das Passwort zu verwenden? Gerade durch beimischen solcher Zeichen wird ein Passwort doch erst brauchbar!
Kann es auch sein, dass ein Konflikt zwischen Registrierung und Einloggen entstehen kann? In der register.php wird geprüft ob Nickname bis zu 30 Zeichen lang ist, alles darunter wird wohl akzeptiert. In der user.php beim einloggen wird dann aber geprüft, ob Nickname länger als 10 Zeichen ist und trifft das zu, wird das Login verweigert. Selbes trifft auch auf das Passwort zu. Und wieso wird ein Passwort über 15 Zeichen abgelehnt? Ich kenne Leute, mich eingeschlossen, bei der die Passwortlänge zwischen 15 und 30 Zeichen lang ist, je nach dem, wie wichtig das PW ist.
Vielleicht hängt das aber auch anders zusammen und ich habe das nur falsch verstanden, da ich den Code nur kurz überflogen habe.
Was ebenfalls sehr unschön ist, ist die Ausgabe mit echo innerhalb der Klasse. Hier wäre es besser die Ausgabe per return an's Script zu leiten und dort die Ausgabe verarbeiten. Da die Klassen auch ohnehin für PHP5 geschrieben sind, sollte auch der Einsatz von Exception überlegt werden.
Soweit mal ein erstes Feedback. Du hast zwar explizit nach Sicherheitscheck gefragt, aber ich dachte ich erwähne das trotzdem mal.![]()
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Ja das stimmt, da ist was schief gelaufen
Danke für den Hinweiß hab das mal ausgebessert
Zuden classen, ich habe erst vor kurzen angefangen mich in OOP einzuarbeiten, deswegen habe ich sowas nicht eingebaut. Bin noch recht neu in solche sachen
Natürlich könnt ihr auch Feedback/Tipps abgeben. Das helft ja nur ein![]()
Ich bin gerade am Angucken, wahrscheinlich kommen noch ein paar Sachen dazu:
- Ich kann mich im Admin-Bereich nicht ausloggen
- XHTML, aber Tags wie <br> statt <br />
- Die Abfrage nach dem aktiven Link ($class, $class1, etc.) würde ich anders machen
1. Was ist denn das hier?
2.PHP-Code:elseif($site == "news&action=archive")
PHP-Code:$selected = isset($_GET["site"]) ? $_GET["site"] : 'index';
Dann brauchst Du bei neuen Menü-Punkten auch die Abfragen nicht mehr anrühren.PHP-Code:<li><a href="index.php" class="<?= $selected == 'index' ? 'selected' : '' ?>">Home</a></li>
<li><a href="index.php?site=news&action=archive" class="<?= $selected == 'news' ? 'selected' : '' ?>">News Archive</a></li>
<li><a href="index.php?site=info" class="<?= $selected == 'news' ? 'selected' : '' ?>">Info</a></li>
- Das Thema HTML-Ausgaben in Skripten, die Logik enthalten, wurde ja schon gesprochen
- Konstruktoren in PHP 5 heißen __construct
Was jetzt kommt, sind nicht direkt schlimm, vereinfachen die Arbeit aber (speziell, wenn man es sich später noch mal anschaut)
- Einheitliche Schreibweise (Du mischst Deutsch und Englisch sowie mal Kamelschreibweise, mal mit Unterstrichen und mal gar keine)
- Einrückungen.. bisschen seltsam umgesetzt
So - weiter mit den richtigen Sachen
- Bei der Installation habe ich einen ungültigen Admin-Namen eingegeben - Trotzdem kommt die Erfolgsmeldung
Sicherheitselevant
- Im Titel lassen sich fremde Inhalte nachladen (z. B. per img-Tag)
- Benutz statt so etwas hier
lieber strip_tags()PHP-Code:$invalide = array('/\/','$','mysql_query','<script');
- News ansehen: 2009-04-14 11:07:30 | Postet by {user}
- Ich kann News anderer Benutzer bearbeiten
- Für die Relation von News <-> Benutzer den Primary-Key, nicht den Benutzernamen benutzen
Geändert von marc22 (14.04.2009 um 11:23 Uhr)
...Meine Meinung
strip_tags() bringt hier rein gar nichts. Die Funktion ist vollkommener Schrott.- Benutz statt so etwas hier
PHP-Code:
$invalide = array('/\/','$','mysql_query','<script');
lieber strip_tags()http://de.php.net/strip_tags Man beachte alleine die offiziellen Anmerkungen...
Wieso das? Die Funktion hier wird nur angewendet, um bösen Code auszufiltern. Die Macken dabei sind zwar ärgerlich, aber nicht sicherheitsrelevant.. Ich hab mir das nicht alles genau durchgelesen, aber wenn da was ist, was ein wirkliches Loch darstellt, dann her damitDie Funktion ist vollkommener Schrott.![]()
...Meine Meinung
Danke für eure TippsWerde mich die Tage dransetzen. Wegen den News bearbeiten der andere nutzer, das ist noch nicht ganz Fertig mit den Benutzer. Ich werde die Tage mal versuchen da die sachen umzuarbeiten.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)