Seite 1 von 1

warum kein 404 bei falscher URL ?

Verfasst: 11.03.2008, 21:11
von Ice Man
Hab gerade mal meine Logs kontrolliert.

also nennen wir die Unterseite mal test.

Wenn diese so aufgerufen wird

test.php dann geht es
testx.php ergibt einen 404, so wie es soll

Nun hab ich in meinen Logs aber sowas gefunden

test.php//index.php?modulo=https://www. dann hier die Einschleusurl
Das Problem, wieso ergibt das kein 404 Fehler ?
Es wird die seite geladen, aber alle Links drauf stimmen nicht mehr.
Und alle Bilder funktionieren nicht, da diese nicht Absolut verlinkt waren.

Was muss ich einstellen, das hier auch ein 404 kommt, da es ja keine echte URL ist ??

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Verfasst: 11.03.2008, 21:53
von chris21
In der .htaccess (oder httpd.conf):

Code: Alles auswählen

AcceptPathInfo off

Verfasst: 11.03.2008, 23:46
von Ice Man
Danke für die Antwort.
Hatt das noch irgendwelche Nachteile ?
Also geht dafür was anderes nicht ?

Verfasst:
von

Verfasst: 12.03.2008, 00:50
von chris21
Öhm, ja, es hätte Nachteile, falls irgendwo auf Deiner Seite Verlinkungen wie
z.B. forum.php/f3/topic333 oder product.php/id5/der-supertolle-fernseher oder ähnliches regulär und gewollt auftaucht.

AcceptPathInfo on erlaubt einem z.B., dass dann die Datei forum.php aufgerufen wird und dieser die nachfolgenden Informationen in $_SERVER["PATH_INFO"]; zur Verfügung stehen, so dass sie ähnlich ausgewertet werden können wie forum.php?forum=3&topic=333.

Diese Technik wird teilweise zur Optimierung verwendet, wenn z.B. mod_rewrite nicht einsetzbar ist.

Falls aber solche Techniken/Dateien bei dir nicht genutzt werden, hat es keine Nachteile.

Verfasst: 12.03.2008, 10:29
von Ice Man
Na dann hat sichs erledigt ;)

Ich setze Mod Rewrite ein.
Hab außerdem einen 500er bekommen, also lass ich das lieber ;)

Verfasst: 12.03.2008, 15:53
von chris21
Halt :wink:

Ich sprach davon, dass eine solche Technik wie Dateien der Art forum.php/f3/topic33 dann eingesetzt wird, wenn mod_rewrite nicht eingesetzt werden kann.

Da Du aber mod_rewrite einsetzt, wirst Du diese Optimierungstechnik vermutlich nicht verwenden und kannst AcceptPathInfo auf Off setzen.

Der 500er kam vermutlich dadurch zustande, dass ich dummerweise oben das "off" klein geschrieben habe und Apache damit nicht zurecht kommt. :roll:

Also versuch nochmal:

Code:

AcceptPathInfo Off


am Anfang Deiner .htacess.

Siehe auch https://httpsd.apache.org/docs/2.2/de/m ... ptpathinfo

[ot]
Das forum hängt heute aber wieder gewaltig...
[/ot]

Verfasst: 12.03.2008, 17:30
von HPB
Hallo Iceman,

generell ist das ja erstmal nicht schlimm. Akzeptiert deine index.php respektive die hier genannte "test.php" verschiedene Variablen in Form von "index.php?var1=foo&var2=bar"?

Falls das nicht der Fall ist, kannst du ja generelle Varieblenanhänge auf 404 oder andere Status-Codes umleiten.

Andernfalls wäre es interessant, was für Variablen die Datei akzeptiert und welche Ausschlusslogik du für "nicht gefundene Variablen" eingebettet hast. Falls die Ausschlusslogik schwierig ist, hilft wahrscheinlich nur noch eine Blacklist a là "Wenn (z.B.) 'http' in Variable, dann 404 Umleitung".

Grüße

Verfasst: 12.03.2008, 19:07
von Ice Man
Das problem, das wurde von dem Bot oder was das auch immer war, an alle möglichen URLs angehangen.

Und das wollte ich verhindern, das diese so überhaupt aufgerufen werden können.
Es betrifft seiten mit und ohne Variablen.

Werds nochmal mit großem Off probieren, und dann berichten.

Verfasst: 13.03.2008, 12:04
von HPB
Naja, aber du wirst doch wohl deine Eingangsvariablen ($_GET und $_POST) an zentraler Stelle prüfen und sichern, oder?
Falls nicht, würde ich das schnellstens nachholen.

Bootstrap-Datei: array_map(array('DB_Abstract_Wrap','sanitizeInput_Multilevel'),$this->aGet);

Funktion dazu (ungefähr & ungetestet):
public function sanitizeInput_Multilevel($sString) {
$sString = (get_magic_quotes_gpc())?stripslashes($sString):$sString;
$sString = strip_tags($sString);
//Blacklist abgleich
if(strpos($sString, "http")!==false||......) {
$oHelperHttp = new Http_Status_Redirect404();
}
}


Nur als Anregung für den Gedankengang (so runtergeschrieben, also ungetestet!);

Verfasst: 17.03.2008, 13:54
von chris21
Hi Ice Man,

da vermutlich Dein Problem auf einem Apache 1.3 auftaucht und dort AcceptPathInfo als Direktive nicht zur Verfügung steht, bietet sich folgende Lösung über mod_rewrite an:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} /(.*)(\.php|\.html|\.cgi)/(.*)
RewriteRule (.*) http://www.example.com/%1%2 [R=301,L]

Damit werden solche Abfragen nun abgefangen und auf Deine eigentliche URL umgeleitet.

D.H-> test.php/hallo/welt -> test.php

Ebenso kannst Du weitere Dateiendungen hinzufügen, z.B. statt (\.php|\.html|\.cgi) (\.php|\.html|\.cgi|\.xhtml), um diese Regel auch bei xhtml Dateien anzuwenden, etc.