Schrift
[thread]423[/thread]

HTML::Mason als CGI: mason_handler.pl



<< >> 4 Einträge, 1 Seite
GwenDragon
 2005-02-07 19:47
#4278 #4278
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Möglicherweise gehört folgendes eher unter Apache, aber mal sehen. Ansonsten bitte verschieben.

Da ein aktuelles Webprojekt kein mod_perl installiert hat, benutze ich HTML::Mason mit einem Perl-Skript als CGI-Wrapper (=Mason-CGI).
Ich verwende HTML::Mason 1.26
Klappt auch alles wunderbar.

Meine .htaccess im Docroot ist
Code: (dl )
1
2
3
4
Action mason-cgi /cgi-bin/mason-handler.pl
<FilesMatch "\.m(html|txt|pl)$">
   SetHandler mason-cgi
</FilesMatch>


Rufe ich zum Beispiel die existente URL /test/t.mhtml auf, klappt Mason vorzüglich.

Das Mason-Handler residiert im /cgi-bin Verzeichnis und Rechtemäßig ist auf rwxr-x-rx gesetzt.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;

use HTML::Mason::CGIHandler;

use lib qw ( /wwwroot/A233122/html/cgi-bin/lib );

my $h = HTML::Mason::CGIHandler->new (
   data_dir  => '/wwwroot/A233122/tmp/mason',
   comp_root => $ENV{DOCUMENT_ROOT},
    
   error_mode => 'fatal', # Output to serverlog
);

$h->handle_request;

1;


Ich möchte jedoch verhindern, dass der Mason-Handler direkt aufgerufen werden kann, da er seltsamerweise seinen eigenen Inhalt ausgibt!
Ist mit mod_rewrite sowas möglich - ich habe es jedenfalls nicht hinbekommen?

Wenn ich als RewwriteRule folgendes benutze, dann wird der Aufruf des Mason-Wrappers nicht erlaubt.
Code: (dl )
1
2
RewriteCond %{REQUEST_URI} mason_handler.pl$
RewriteRule ".*" - [F]
Gut.

Wie verhindere ich folgende "direkten" Aufrufe?
/cgi-bin/mason_handler.pl/test/t.mhtml
Aufrufe wie /test/t.mhtml sollen nämlich erlaubt sein.

Intern macht der Apache doch durch das Action aus /test/t.mhtml den Request /cgi-bin/mason_handler.pl/test/t.mhtml\n\n

<!--EDIT|GwenDragon|1107802198-->
GwenDragon
 2005-02-09 11:34
#4279 #4279
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Anscheinend hat leider hier niemand einen Rat. :(
Oder doch? Keine Apache-Fachleute da?
GwenDragon
 2005-02-15 13:33
#4280 #4280
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Ich Dussel. Der Handler übernimmt ja die Mason-HTML-Datei über die UmgebungsvariablePATHINFO.
Wenn Pathinfo nicht vorhanden, dann wurde ja der Handler direkt aufgerufen, also verbieten.
Code: (dl )
1
2
3
4
#Aufruf des Handlers ohne PATH_INFO
RewriteCond %{PATH_INFO} ^$
RewriteCond %{REQUEST_FILENAME} "mason_handler.pl$"
RewriteRule ".*" - [F]


Problem gelöst!\n\n

<!--EDIT|GwenDragon|1108477714-->
GwenDragon
 2005-02-15 22:50
#4281 #4281
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
<< >> 4 Einträge, 1 Seite



View all threads created 2005-02-07 19:47.