Zitat von RamonaS
Beitrag anzeigen
Index 0 aus array entfernen?
Einklappen
X
-
Kommentar
-
$_SERVER['SCRIPT_NAME'] ist meist sicherer. Prüfe vor der Verwendung ob das auf deinem System auch so ist.
Aber wie schon gesagt: Enfach weglassen wäre das Einfachste.
Kommentar
-
Zitat von combie Beitrag anzeigen$_SERVER['SCRIPT_NAME'] ist meist sicherer.
REQUEST_URI, ggf. zerlegt, ist manchmal als Alternative brauchbar.I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Hallo,
Ok die vorschläge schein sich ja ganz vielfältig zu sein.
Ich würde das mal von der anderen seite angehen, also Frage zu Punkt 2 von combie:
>2. PHP_SELF ermöglicht u.U. XSS Attacken
Was für Schaden kann man jetzt hier überhaupt anrichten?ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Kommentar
-
-
Zitat von combie Beitrag anzeigenDein Google kaputt?
Cross-Site Scripting ? Wikipedia
Ok ich lese mir das mal durch, scheint aber ne komplizierte sache zu sein.
Im notfall erlaube ich in eingabefelder nur die zeichen die man da drin wirklich braucht.ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Kommentar
-
Zitat von RamonaS Beitrag anzeigenÄhmm nicht kaputt, aber ich befasse mich weniger mit schlechtigkeites dieser art...auf was menschen für ideen kommen - fantastisch!
Wer im Internet gutgläubig ist, handelt sehr fahrlässig. Es gibt 99,9% "ordentliche" Menschen und 0,1% "böse" Menschen. Und diese 0,1% haben sich zur Aufgabe gemacht, die 99,9% auszunehmen. Logischerweise sind die auch nicht ganz blöd und probieren das zuerst bei denen, die "schwach" erscheinen. Wenn du also eine öffentliche (!!!) Webseite betreibst, dir aber um Sicherheit keine Gedanken machst, bist du "schwach" und somit ein leichtes und einfaches Angriffsziel.
Kommentar
-
Zitat von RamonaS Beitrag anzeigenNaja, ich hab eigentlich keine daten von der zeit als timestamp noch kürzer als 10 zeichen war.
...aber ich werde die "unvermeidliche preg_replace()-Lösung" von dir zum einsatz bringen.
Ich muß dir allerdings gestehen, die regex sind für mich noch viel schlimmer als mit arrays rum zu handieren.
Ich lass die dann gleich so denn wenn ich da dran fummel tut sie garantiert nicht mehr.
Zitat von wahsaga Beitrag anzeigenDas ist in so einem simplen Fall keine gute Idee.
explode leistest hier ganz simpel das gewünschte.
Das es sicher schneller als preg_split() ist, ist eine andere Sache.
Reguläre Ausdrücke sind i.a.R. kostenintensiver als einfache Stringfunktionen.
Ich hab das jetzt mal durchgetestet:
PHP-Code:$zt = '1234567890|gaga|gogo|tralafitti'; // teststring
// 1 100_000
// durchlauf durchläufe durchläufe
// in ms in ms pro s
list (, $out) = preg_split('/\|/', $zt, 2); // 0.004 377.204 265108
preg_replace('/\A[^|]*\|/', '', $zt); // 0.003 330.124 302916
list (, $out) = explode('|', $zt, 2); // 0.002 248.582 402281
substr($zt, strpos($zt, '|') + strlen('|')); // 0.002 234.148 427080
substr($zt, strpos($zt, '|') + 1); // 0.002 174.253 573878
Kommen wir nun von der Geschwindigkeit zur Schönheit. Die liegt bekanntlich im Auge des Betrachters und ist daher schwerer messbar ... :-P
Zitat von RamonaS Beitrag anzeigen@fireweasel
So ich hab das jetzt so gemacht:
PHP-Code:if(isset($_GET['uo']) and $_GET['uo']=="s") # Link wurde geklickt
{echo "<br /><br />";
$arr=explode("\n",file_get_contents($_SERVER["DOCUMENT_ROOT"]."/useronline.txt"));
foreach($arr as $line)
{echo "<br />".preg_replace('/\A[^|]*\|/','',$line),"\n";} # Ganze Zeile anzeigen, ausser Arayy Index 0
}
else
{echo "<a href='".$_SERVER['PHP_SELF']."?uo=s'>(".$all.")</a>";}
unset($dx,$arr,$line,$zt);
PHP-Code:define('cgi_user_online', 'uo');
// ...
function blarg() {
// ...
$file_user_online = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'useronline.txt';
$url_self = $_SERVER['PHP_SELF']; // oder ein sinnvollerer Wert
// ...
// empty () funktioniert fast immer
// Ausnahme: '0' gehoert zu den erwuenschten Benutzereingaben
if (!empty ($_GET[cgi_useronline])) {
echo '<br /><br />';
// Datei zeilenweise in Array einlesen
// Leerzeilen werden ausgelassen
// Zeilenumbrueche entfernt
$arr = file($file_useronline, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
if (empty ($arr)) {
// Datei konnte nicht gelesen werden oder war leer, also brechen wir hier ab
return false;
}
foreach ($arr as $line) {
// entfernt das erste Feld des "Datensatzes" und Trennzeichen "|"
echo '<br />', preg_replace('/\A[^|]*\|/', '', $line), "\n";
}
}
else {
echo sprintf(
'<a href="%s"?%s=s>(%s)</a>',
htmlspecialchars($url_self, ENT_QUOTES),
cgi_user_online,
htmlspecialchars($all)
);
}
// ...
return true; // oder ein sinnvollerer Rueckgabewert
}
Für änderungsvorschläge hab ich immer ein offenes auge.
Naja, immer noch besser als ein offenes Bein ...Zuletzt geändert von fireweasel; 05.07.2009, 00:13.
Kommentar
-
Zitat von fireweasel Beitrag anzeigenGanz offensichtlich nicht, denn es liefert ein Array zurück, wir wollten doch aber mit echo eine Zeichenkette ausgeben, oder hab ich was übersehen?
Ich möchte per echo den inhalt aller array-elemente ausgeben, ausser dem ersten elemend - index 0
Und je nachdem, wie einfach diese Position bestimmbar ist, wären hier weder RegEx noch explode meine erste Wahl, sondern simple Zeihenkettenfunktionen (wie strpos und substr).I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Zitat: Was macht ihr da an stelle von PHP_SELF ?
Zitat von combie Beitrag anzeigenIch?
Einfach nur weglassen.
Soviel ich weiß ist das nicht valide, ausserdem ist das doch genau so gefährlich als vorher, ainschläußen kann man dort auch fremden code, oder?
<a href="">Link</a>
<a href="#">Link</a>
Beide varianten sind laut w3c in xhtml nicht zuläßig, ein link muß auch eine eindeutige linkadresse beinhalten!ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Kommentar
-
Zitat von RamonaS Beitrag anzeigen<a href="">Link</a>
<a href="#">Link</a>
Beide varianten sind laut w3c in xhtml nicht zuläßig,
ein link muß auch eine eindeutige linkadresse beinhalten!
ausserdem ist das doch genau so gefährlich als vorher, ainschläußen kann man dort auch fremden code, oder?
Hast du verstanden, worauf XSS beruht ...?
(Davon abgesehen verstehe ich die Panik, die einige hier machen, was Werte wie PHP_SELF, REQUEST_URI etc. angeht, nicht.
Vernünftig kontextgerecht behandelt stellt keiner davon eine XS-Gefahr dar.)I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Soviel ich weiß ist das nicht valide,
Das action oder href Attribut MUSS vorhanden sein, aber es darf leer bleiben!
ainschläußen kann man dort auch fremden code, oder?
Besser eine Tür mehr zu, als eine mehr offen.
Vernünftig kontextgerecht behandelt stellt keiner davon eine XS-Gefahr dar.
Aber das alles ist bei RamonaS offensichtlich nicht gegeben.Zuletzt geändert von combie; 06.07.2009, 15:39.
Kommentar
Kommentar