[Apache]Blokowanie dostępu do plików PHP

0

Męczę się już od dłuższego czasu, kombinuję, wymyślam, googluje i nic.

Mój problem wygląda następująco. Mam w katalogu pare skryptów, którym robię przekierowanie poprzez moduł rewrite. W praktyce wygląda to tak:

blog.html -> blog.php
upload.html -> upload.php
...

Wszystko było by super gdyby nie to, że użytkownik może zmienić rozszerzenie z html na php i w taki sposób odnosić się do plików. Jest to problemem w moim przypadku, bo kwestię filtrowania danych przychodzących do skryptu zostawiam modułowi rewrite, tak więc bez niego moje skrypty są podatne na mysql injection itd. Poza tym problemem chciałbym aby to wszystko ładnie wyglądało (wszytkie pliki niby html), a w momencie gdy użytkownik odniesie się do pliku .*.php, to dostanie błąd 404. Próbowałem tuzinów rozwiązań i zawsze dochodziłem do jednego martwego punktu. Gdy zakładałem regułę na plik coś_tam.php, to owa reguła działała także dla coś_tam.html. Wygląda to tak jakby Apache wpierw parsował regułę coś_tam.html, z tego robił coś_tam.php i zaraz po tym jeszcze raz sprawdzał wszystkie reguły żeby na koniec wyświetlić mi 404.

Jedyne rozwiązanie jakie mi się udało, to dopisanie odpowiedniego kodu PHP do pliku konfiguracyjnego mojego frameworka, przez co każe odwołanie do pliku z rozszerzeniem .php kończylo się instrukcją die. Niestety takie rozwiązanie mnie nie satysfakcjonuje, dlatego piszę tu z prośba czy też pytaniem: czy takie rozwiązanie jest w ogóle możliwe?

0

Może:
RewriteRule .php index.html [NC,R]

Albo:
<Files "*.php">
Order Deny, allow
</Files>
ale nie wiem jak to sie zachowa z mod_rewrite.

0

Dzięki za pomoc ale to nie to.

Problem polega na tym, że kiedy blokuję dostęp do plików php to tym samym blokowane są odwołania do plików .html przekierowywanych przez moduł rewrite na pliki php.

Dla przykładu

RewriteEngine On
RewriteRule ^blog.html$ blog.php
RewriteRule ^.*.php$ - [R=404]

Powoduje, że odwołując się do blog.php otrzymam błąd 404 blog.php not found. Ale niestety tak samo jest z blog.html. Dostaję info 404 blog.html not found ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1