php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 03-07-2009, 21:59
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RamonaS Beitrag anzeigen
zu 3:
Damit ich auch sicher bin das die varablen/arrays sich nicht addieren oder sowas in der art.
Wenn die Funktion so groß ist, dass du den Überblick über deine Variablen verlierst, machst du irgendwas falsch.
Mit Zitat antworten
  #17 (permalink)  
Alt 03-07-2009, 22:33
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Was macht ihr da an stelle von PHP_SELF ?
Ich?
Einfach nur weglassen.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #18 (permalink)  
Alt 04-07-2009, 01:54
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Du kannst PHP_SELF benutzen, darfst es nur nicht unbehandelt im Kontext HTML ausgeben - htmlspecialchars hilft.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #19 (permalink)  
Alt 04-07-2009, 12:29
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

$_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.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #20 (permalink)  
Alt 04-07-2009, 13:52
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
$_SERVER['SCRIPT_NAME'] ist meist sicherer.
Und beide nur brauchbar, wenn es auch eine direkte Beziehung URL <-> Scriptname gibt.
REQUEST_URI, ggf. zerlegt, ist manchmal als Alternative brauchbar.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #21 (permalink)  
Alt 04-07-2009, 15:14
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

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?
Mit Zitat antworten
  #22 (permalink)  
Alt 04-07-2009, 15:16
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Dein Google kaputt?
Cross-Site Scripting ? Wikipedia
__________________
Wir werden alle sterben
Mit Zitat antworten
  #23 (permalink)  
Alt 04-07-2009, 16:12
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Ähmm nicht kaputt, aber ich befasse mich weniger mit schlechtigkeites dieser art...auf was menschen für ideen kommen - fantastisch!

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.
Mit Zitat antworten
  #24 (permalink)  
Alt 04-07-2009, 16:24
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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!
Gehe prinzipiell immer davon aus, dass alles, was nicht unter deiner Kontrolle steht, böse sein kann. Und was der Benutzer auf seiner Seite im Browser (oder mit anderer Software) macht, kannst du nicht kontrollieren, somit erwarte immer das Schlimmste.

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.
Mit Zitat antworten
  #25 (permalink)  
Alt 05-07-2009, 01:10
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von RamonaS Beitrag anzeigen
Naja, ich hab eigentlich keine daten von der zeit als timestamp noch kürzer als 10 zeichen war.
Genau so eine Antwort hatte ich erwartet.

Zitat:
...aber ich werde die "unvermeidliche preg_replace()-Lösung" von dir zum einsatz bringen.
Das "unvermeidlich" bezog sich einerseits darauf, dass mir diese Lösung als erstes eingefallen ist (bevor ich auf die Suche nach Lösungen mit den str_schlagmichtot-Funktionen gegangen bin); und andererseits darauf, dass man so eine Lösung wohl von mir erwartet (hätte).

Zitat:
Ich muß dir allerdings gestehen, die regex sind für mich noch viel schlimmer als mit arrays rum zu handieren.
Das lernt man mit der Zeit. Der RegEx ist doch eigentlich ganz simpel: Ein bisschen Patternmatching -- keinmal bis vielmal ein fast beliebiges Zeichen außer "|" und danach ein "|" -- und davor eine Verankerung am Stringanfang "\A".

Zitat:
Ich lass die dann gleich so denn wenn ich da dran fummel tut sie garantiert nicht mehr.
Aber nur durchs Dranrumfummeln lernt man, wie sie funktionieren.

Zitat:
Zitat von wahsaga Beitrag anzeigen
Das ist in so einem simplen Fall keine gute Idee.

explode leistest hier ganz simpel das gewünschte.
Ganz offensichtlich nicht, denn es liefert ein Array zurück, wir wollten doch aber mit echo eine Zeichenkette ausgeben, oder hab ich was übersehen?

Das es sicher schneller als preg_split() ist, ist eine andere Sache.

Zitat:
Reguläre Ausdrücke sind i.a.R. kostenintensiver als einfache Stringfunktionen.
Schön, dass du die Pauschalaussage mit "i.a.R." abgeschwächt hast.


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('/\|/'$zt2);  //     0.004     377.204      265108
preg_replace('/\A[^|]*\|/'''$zt);        //     0.003     330.124      302916
list (, $out) = explode('|'$zt2);        //     0.002     248.582      402281
substr($ztstrpos($zt'|') + strlen('|')); //     0.002     234.148      427080
substr($ztstrpos($zt'|') + 1);           //     0.002     174.253      573878 
Die Variante mit preg_replace() läuft im Schnitt ca. 30 Prozent langsamer als die mit explode(). Kostenintensiv ist was anderes.

Kommen wir nun von der Geschwindigkeit zur Schönheit. Die liegt bekanntlich im Auge des Betrachters und ist daher schwerer messbar ... :-P

Zitat:
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); 
Würdest du sagen das dieser scriptteil jetzt perfekt ist oder nur zu 100% ok?
Ich habe mal die schon gegebenen Vorschläge eingearbeitet:

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_useronlineFILE_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_selfENT_QUOTES),
            
cgi_user_online,
            
htmlspecialchars($all)
        );
    }
    
// ...
    
return true// oder ein sinnvollerer Rueckgabewert

So in etwa würde ich das machen. Es gibt da sicher immer noch Verbesserungsmöglichkeiten, aber um die umzusetzen, müsste man mehr über das gesamte Script wissen. Was mir vor allem nicht gefällt, sind die ganzen festverdrahteten Zeichenketten. Wer sowas mal an andere Dateinamen, Pfade oder CGI-Parameter anpassen muss, darf fleißig das ganze Script umkrempeln. Viele (Quelltext-)Editoren bieten zu diesem Zweck in ihren Search-n-Replace-Dialogen übrigens Reguläre Ausdrücke an. Auf diese Weise kann man die auch üben.

Zitat:
Für änderungsvorschläge hab ich immer ein offenes auge.
Offenes Auge? Oder meintest du eher ein offenes Ohr?
Naja, immer noch besser als ein offenes Bein ...

Geändert von fireweasel (05-07-2009 um 01:13 Uhr)
Mit Zitat antworten
  #26 (permalink)  
Alt 05-07-2009, 03:04
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Ganz offensichtlich nicht, denn es liefert ein Array zurück, wir wollten doch aber mit echo eine Zeichenkette ausgeben, oder hab ich was übersehen?
Ganz zum Anfang des Threads hiess es:
Zitat:
Ich möchte per echo den inhalt aller array-elemente ausgeben, ausser dem ersten elemend - index 0
Das mit dem Array kam hier höchstvermutlich daher, dass es schon explode genutzt wurde - aber eigentliches Anliegen wahr wohl, von einer vorliegenden Zeile nur den Rest ab einer bestimmten Position auszugeben.

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.
Mit Zitat antworten
  #27 (permalink)  
Alt 06-07-2009, 16:19
RamonaS
 Registrierter Benutzer
Links : Onlinestatus : RamonaS ist offline
Registriert seit: Mar 2009
Beiträge: 177
RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat: Was macht ihr da an stelle von PHP_SELF ?

Zitat:
Zitat von combie Beitrag anzeigen
Ich?
Einfach nur weglassen.
Da wollte ich nochmal nachhacken:
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!
Mit Zitat antworten
  #28 (permalink)  
Alt 06-07-2009, 16:29
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von RamonaS Beitrag anzeigen
<a href="">Link</a>
<a href="#">Link</a>
Beide varianten sind laut w3c in xhtml nicht zuläßig,
Wo hast du denn die Info her?
Zitat:
ein link muß auch eine eindeutige linkadresse beinhalten!
Ein leeres href/action-Attribut wird automatisch zur Adresse, von der das Dokument angefordert wurde, aufgelöst.
Zitat:
ausserdem ist das doch genau so gefährlich als vorher, ainschläußen kann man dort auch fremden code, oder?
Wo soll denn etwas eingeschleust werden, wenn gar nichts ausgegeben wird?

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.
Mit Zitat antworten
  #29 (permalink)  
Alt 06-07-2009, 16:31
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Soviel ich weiß ist das nicht valide,
Was ist da nicht valide?
Das action oder href Attribut MUSS vorhanden sein, aber es darf leer bleiben!

Zitat:
ainschläußen kann man dort auch fremden code, oder?
Dann aber nicht mehr über PHP_SELF.
Besser eine Tür mehr zu, als eine mehr offen.

Zitat:
Vernünftig kontextgerecht behandelt stellt keiner davon eine XS-Gefahr dar.
Nach entsprechnder Ausbildung, bei bestimmungsgemäßer Anwendung und mit richtiger Schutzkleidung ist eine 70cm 3.8PS Kettensäge auch recht ungefährlich.
Aber das alles ist bei RamonaS offensichtlich nicht gegeben.
__________________
Wir werden alle sterben

Geändert von combie (06-07-2009 um 16:39 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zeile aus Array entfernen? Daether PHP Developer Forum 2 21-07-2006 10:44
Max index von array tine_ PHP Developer Forum 2 01-02-2005 12:53
define und array-index uschi PHP Developer Forum 4 06-08-2003 17:34
Name des Array-Index TobiaZ PHP Developer Forum 12 21-03-2003 17:06
Array- Elemente anhand des values aus dem array entfernen Thommy PHP Developer Forum 12 30-10-2001 20:05

Themen-Optionen
Thema bewerten
Thema bewerten:

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 are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:15 Uhr.