Probleme: SetEnvIf und URL- Übergabe an PHP

Alles, was den Apache betrifft, kann hier besprochen werden.

Probleme: SetEnvIf und URL- Übergabe an PHP

Postby M*I*B » 05. March 2010 23:50

Hallo liebe Leser/innen,

ich hätte da aktuell zwei Problemchen, die ich einfach nicht gelöst bekomme... ich fang einfach mal an...

SetEnvIf(NoCase):
Um unliebsame w00tw00t und ?topic=http:// aus dem System zu kicken, habe ich mir das folgende überlegt...

Code: Select all
SetEnvIfNoCase Request_URI "^/index.php?" !kick
SetEnvIfNoCase Request_URI "w00tw00t" kick
SetEnvIfNoCase Request_URI "217.218.225.2" kick
SetEnvIfNoCase Request_URI "topic=http" kick
SetEnvIfNoCase Request_URI "^//" kick


... und dann ein ...

Code: Select all
<Directory "C:/_www_">
   Options none
   AllowOverride None
   Order deny,allow
   Deny from env=kick
</Directory>


Fragen sind nun, ob das (1.) überhaupt so funktioniert und (2.) die <Directory "C:/_www_"> nur auf das angegebene Verzeichnis bezieht, oder auch auf die SubDirs ?


URL- Übergabe:
Im indirekten Zusammenhang damit suche ich eine Möglichkeit, von PHP aus irgendwie an die komplette, unverfälschte URL heran zu kommen, wie sie der Apache auch in die AccessLogz schreibt. Bei korrekten Anforderungen ist es ja (glaub ich) kein Problem, aber mich interessieren wesentlich mehr die URL's, die gar nicht bis zum Interpreter vordringen resp. vordringen und nicht sinnvoll verarbeitet werden können.
Beispiele:
Code: Select all
67.43.5.33 host.cdxsolutions.net - - [05/Mar/2010:00:46:15 +0100] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 226 "-" "-"
213.151.119.102 213.151.119.102 - - [05/Mar/2010:21:57:42 +0100] "GET /mysqladmin/main.php HTTP/1.0" 302 226 "-" "-"
213.151.119.102 213.151.119.102 - - [05/Mar/2010:21:57:47 +0100] "GET main.php HTTP/1.0" 400 1091 "-" "-"
90.146.140.89 cpe90-146-140-89.liwest.at - - [05/Mar/2010:21:25:20 +0100] "GET /index.php?topic=http://217.218.225.2:2082/index.html? HTTP/1.1" 200 11337 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"


Wäre echt toll, wenn ich mir eurer Hilfe noch was dazulernen könnte ...
M*I*B
 

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby M*I*B » 07. March 2010 11:16

Nachtrag:

Ok, inzwischen habe ich gelernt, das ich zwar mit /root/* alle Verzeichnisse unterhalb Root meinen kann, aBär nicht tiefer. Daher habe ich erstmal in der httpd.conf ...

<Directory "/*">
Options None
AllowOverride None
Order Deny,Allow
Deny from All
</Directory>


... gesetzt und gleich danach nochmal das Gleiche für das www-root. Anschliessend habe ich in den (hostname).conf, welche aus der httpd.conf per INCLUDE nachgeladen werden, für die entsprechenden vHosts ...

<Directory "/_www_/(hostname)/top.prd">
Options none
AllowOverride None
Order Allow,Deny
Allow from env=!kick
</Directory>


... gesetzt.

Klappt aber auch nicht *SchimpfMegger*

Also noch mal die Frage, was jetzt noch falsch ist?!? Oder ist das zu speziell, das es niemand so auf Anhieb beantworten kann? In dem Fall würde ich mich über einen Hinweis freuen, wo ich da fragen könnte...
M*I*B
 

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby Nobbie » 07. March 2010 12:41

M*I*B wrote:Oder ist das zu speziell, das es niemand so auf Anhieb beantworten kann? In dem Fall würde ich mich über einen Hinweis freuen, wo ich da fragen könnte...


Um es mit Grönemeyer zu sagen: was soll das?
Nobbie
 
Posts: 13175
Joined: 09. March 2008 13:04

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby M*I*B » 07. March 2010 12:46

... was soll was?
M*I*B
 

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby Nobbie » 07. March 2010 12:48

Na das, was Du da zu machen versuchst. Was nicht klappt. Was soll das? Welchen Sinn hat das, wozu ist das da?
Nobbie
 
Posts: 13175
Joined: 09. March 2008 13:04

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby M*I*B » 07. March 2010 12:57

... ich dachte, das ist klar?!
Um es kurz zu sagen: Unerwünschte Elemente auf einen 403 laufen lassen ...
M*I*B
 

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby Nobbie » 07. March 2010 13:01

M*I*B wrote:Um es kurz zu sagen: Unerwünschte Elemente auf einen 403 laufen lassen ...


"Unerwünscht" ist kein gängiger Begriff. Wenn ein Element auf Deinem Rechner "unerwünscht" ist, dann lösche es doch. Und ein Request auf ein nicht vorhandenes Element wird von Apache automatisch mit Error 403 (bzw. 404, aber das ist eher noch besser) quittiert.

Deswegen immer noch meine Frage: was soll das?
Nobbie
 
Posts: 13175
Joined: 09. March 2008 13:04

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby M*I*B » 07. March 2010 13:21

... solche Sprüche helfen mir echt weiter :roll:

Ok, um es kurz zu machen: Hast du auch eine Lösung für meine Frage/n anzubieten, oder beschränkst du dich ausschliesslich darauf, den Schulmeister raushängen zu lassen?!

Ich dachte, dieses (und andere) Foren sind dafür da, das Profis den Anfängern auf die Sprünge helfen resp. Lösungswege aufzeigen ... Oder habe ich in den Forenregeln was übersehen? 8)
M*I*B
 

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby Nobbie » 07. March 2010 14:52

M*I*B wrote:Ich dachte, dieses (und andere) Foren sind dafür da, das Profis den Anfängern auf die Sprünge helfen resp. Lösungswege aufzeigen ...


Wo steht das?

M*I*B wrote:Oder habe ich in den Forenregeln was übersehen? 8)


Weiß ich nicht, aber das obige finde ich nicht.

Was Du nicht verstehen willst, ist die Tatsache, dass ich meine Frage ernst meine: ich weiß nicht, was Du machen willst. Und ich kann erst helfen, wenn ich verstehe, was du willst.

Einen Teil glaube ich inzwischen verstanden zu haben (kann aber keinen Sinn entdecken) und zum Teil kann ich Fehler beheben:

a) die Order-Klausel ist für diese Zwecke ungeeignet, richtig herum und vollständig muss sie so lauten:

Code: Select all
Order Allow,Deny (und nicht anders herum!)
Allow From All
Deny From env=klick


Dann funktioniert zumindest der Teil für "wt00t00" (wobei ich nach wie vor nicht begreife, was der Sinn davon ist). Dann kommt eine 403er Meldung statt einer 404er. Das ganze könnte man ebenso einfach mit einer LocationMatch-Anweisung erledigen.

Wahrscheinlich wird auch die IP-Abfrage funktionieren (habe ich nicht getestet).

Der Teil mit "topic=http" geht gar nicht, da gibt es auch keine (mir bekannte) Lösung, da im Request_URI nicht die Parameter zur Verfügung stehen. Man kann die URL-Parameter nicht innerhalb der Apache-Konfiguration auswerten.
Nobbie
 
Posts: 13175
Joined: 09. March 2008 13:04

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby M*I*B » 07. March 2010 15:19

... ok, jetzt sprechen wir die gleiche Sprache ;) Danke erstmal für den Hint mit dem Order; das mache ich öfter falsch herum *grrr*

Ich versuche noch mal zu erklären, was ich versuche zu erreichen. Als Grundlage mal ein Schnipsel aus einem Logfile;

Code: Select all
... GET /index.php?topic=http://217.218.225.2:2082/index.html? HTTP/1.1" 200 11011 ...


Wie man sieht, akzeptiert Apache den mit einem 200. Wenn ich das richtig verstanden habe, steht das doch auch in der Request_URI drin, so das ich das mit ...

SetEnvIfNoCase Request_URI "topic=http" kick

... abfragen kann (kein ^am Anfang, kein $ am Ende = *topic=http* ?!?). Zumindest habe ich es so nach Studium der ganzen Manuals dazu so verstanden...

Letztendlich möchte ich solche URI's gleich von vornherein abfangen und auflaufen lassen; gibt es da einen anderen Weg?
M*I*B
 

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby Nobbie » 07. March 2010 15:46

M*I*B wrote:
Code: Select all
... GET /index.php?topic=http://217.218.225.2:2082/index.html? HTTP/1.1" 200 11011 ...


Wie man sieht, akzeptiert Apache den mit einem 200. Wenn ich das richtig verstanden habe, steht das doch auch in der Request_URI drin, so das ich das mit ...


Jain. Das ist ja genau das, was ich meine: es mag zwar Bestandteil des Requests sein, aber Apache stellt es NICHT in der Form innerhalb der Konfiguration zur Verfügung. Weder hier, noch im Modul mod_rewrite. Man kann den Teil hinter dem Fragezeichen nicht abfragen. Warum auch immer, vielleicht findest Du irgendeine Literatur dazu, aber es geht effektiv nicht. Du kannst nicht einmal nur nach "topic" fragen (also nicht einmal die Wertzuweisung abfragen, nur nach "topic" suchen), wenn "topic" hinter dem Fragezeichen in der URL steht, wird es NICHT nach unten durchgereicht.

Lediglich in PHP Scripts u.ä. stehen diese Wert wieder zur Verfügung. So macht ja auch WordPress beispielsweise mittels mod_rewrite GRUNDSÄTZLICH eine Weiterleitung auf ./index.php und entscheidet dann innerhalb von index.php mit PHP Mitteln, wie es weitergehen soll. Da werden ja ganz massiv die Parameter analyisert usw., das alles geschieht NICHT in der Apache Konfiguration, sondern auf PHP Ebene.

Last not least sehe ich aber keinen nachvollziehbaren Sinn darin, für bestimmte Parameter in der URL ein "forbidden" zu generieren - wozu? Ein Riesaufwand für nichts.
Nobbie
 
Posts: 13175
Joined: 09. March 2008 13:04

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby M*I*B » 07. March 2010 16:07

es mag zwar Bestandteil des Requests sein, aber Apache stellt es NICHT in der Form innerhalb der Konfiguration zur Verfügung

Aha! Dann wird mir einiges klar; schade eigentlich; dann kann ich ja lange frickeln :cry:
Auf jeden Fall mit deiner Hilfe mal wieder was gelernt; hoffentlich behalte ich das auch im Hinterkopf, wenn mich mal wieder die Frickelwut packt :lol:

keinen nachvollziehbaren Sinn darin, für bestimmte Parameter in der URL ein "forbidden" zu generieren

Nun ja, ob sinnvoll oder nicht... Ich wollte halt mal irgendwie zurück schiessen gegen jene, die ihren Rechner nicht sauber halten können resp. das Netz absichtlich mit so'm Müll vollrotzen. Zum einen sollte das die bis jetzt aufgetauchten raushalten, zum anderen eine Art präventive Aktion gegen zukünftige Müllschleudern sein.

Code: Select all
das alles geschieht NICHT in der Apache Konfiguration, sondern auf PHP Ebene

... hmmm ... Wenn ich das also richtig verstehe, könnte ich z.B. in der php.ini via auto_prepend_file ein Script hinterlegen, was global den Request abfängt, analysiert und darauf hin entweder weiterreicht oder eben blockiert? So in der Art des BotTrap?
... das wäre mal was 8)
M*I*B
 

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby Nobbie » 07. March 2010 16:49

M*I*B wrote:... hmmm ... Wenn ich das also richtig verstehe, könnte ich z.B. in der php.ini via auto_prepend_file ein Script hinterlegen, was global den Request abfängt, analysiert und darauf hin entweder weiterreicht oder eben blockiert? So in der Art des BotTrap?
... das wäre mal was 8)


Ne, das bringt nichts. Das wird ja nur ausgeführt, wenn überhaupt PHP gestartet wird (was ja generell eigentlich nur für *.php Dateien der Fall ist). Bei WordPress wird via mod_rewrite JEDER(!) Request (auch auf Bilder a la *.jpg oder css-Module oder oder) auf index.php geroutet.

Und dann braucht man natürlich kein auto_prepend_file, das wäre ja doppelt gemoppelt, weil index.php ja sowieso immer ausgeführt wird.

Bei WordPress steht in der .htaccess ungefähr so etwas drin (in Wirklichkeit noch mit einer Abfrage drumherum, ob die angefragte Datei physikalisch existiert, aber das braucht man im Prinzip nicht):

Code: Select all
RewriteEngine On
RewriteRule '.*' /index.php


Das ist natürlich brutal ohne Ende, aber machbar. Schreib Dir mal eine kleine index.php mit nur dem Aufruf auf phpinfo() drin und stelle das mal in Dein htdocs Verzeichnis. Dazu die obige .htaccess und dann rufst Du Deine Seite auf, egal welche Verzeichniss und welchen Dokumentnamen Du eingibst, egal welche Parameter Du mitgibst: Du bekommst immer index.php geliefert und mit dem phpinfo() siehst Du, dass im $_SERVER['REQUEST_URI'] alles drin steht, wie Du es eigentlich schon in der Apache Konfiguration erwartet hättest. Und nun kannst Du mit header() oder wie auch immer alles veranlassen, was Du veranlassen möchtest.
Nobbie
 
Posts: 13175
Joined: 09. March 2008 13:04

Re: Probleme: SetEnvIf und URL- Übergabe an PHP

Postby M*I*B » 07. March 2010 23:36

... jo, hast Recht. Rein theoretisch funktioniert das so bei z.B. SMF ebenso. Ursprung ist immer die index.php, so weit ich das bisher gesehen habe. Dann könnte man rein theoretisch sagen, das man alles kickt, was nicht index.php an erster Stelle hat ... *grübel*

Das muss ich mal antesten :wink:
M*I*B
 


Return to Apache

Who is online

Users browsing this forum: No registered users and 37 guests