Puncte:0

Apache 404 eșuează cu /boot.ini%2500.htm

drapel ph

Din anumite motive, următorul htaccess voi redirecționați către o pagină 404 dacă url-ul testat este /boot.ini.htm dar nu dacă este /boot.ini%2500.htm.

Ce trebuie să schimb pentru ca acest lucru să funcționeze sau este o eroare?

Opțiuni Toate -Indici
Opțiuni +FollowSymlinks

ErrorDocument 403 /site/404
ErrorDocument 404 /site/404

RewriteEngine Pornit

RewriteRule ^(fonturi)($|/) - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]

# Asigurați-vă că antetul de autorizare este transmis
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

ServerSignature Off

php_value memory_limit 256M

Serverul meu este:

Versiunea serverului: Apache/2.4.41 (Ubuntu)

Server construit: 2021-06-17T18:27:53

drapel kz
„schimbați pentru ca acest lucru să funcționeze” - care este rezultatul dorit? Există `/boot.ini.htm` ca fișier fizic? Există `/boot.ini%00.htm` (adică URL-ul `/boot.ini%2500.htm` este decodat)? Care este răspunsul când solicitați `/boot.ini%2500.htm`? Nu există nimic în fișierul dvs. `.htaccess` care să vizeze în mod specific aceste solicitări. BTW, directivele tale sunt în ordinea greșită... ultima regulă cu privire la „Autorizare” ar trebui să fie înaintea regulii precedente (controller-ul frontal) (deși aceasta nu are nimic de-a face cu problema ta actuală).
Antony avatar
drapel ph
Mulțumesc - scuze dacă nu am fost clar. Aș dori doar să redirecționeze către pagina 404. Nu - nici boot.ini.htm, nici boot.ini%00.htm nu există. Ca atare, aș fi bănuit că ErrorDocument 404 ar fi făcut acest lucru.
drapel kz
Deci, ce răspuns (și starea HTTP) obțineți de fapt când solicitați `/boot.ini%2500.htm`? O problemă potențială cu 404 `ErrorDocument` personalizat este că se pare că treceți cererea 404 prin cadrul dvs. PHP (presupunând că MultiViews nu este activat și `/site/404.php` nu există?) - deci orice răspuns pe care îl vedeți poate depinde și de cadrul dvs.
drapel kz
Ce zici de o solicitare pentru `/something%2500else`? raspunsul este acelasi?
Antony avatar
drapel ph
Da, văd pictograma Codeigniter în numele filei, așa că bănuiesc că filtrează, dar fără %2500 CI o gestionează corect.
Antony avatar
drapel ph
Exemplul dvs. de /something%2500else are ca rezultat, de asemenea, o pagină 404, dar cu faviconul CI sugerând că ar putea fi transmis
drapel kz
Favicon-ul (din filă) este memorat în cache în mod persistent de browser - așa că a vedea asta nu înseamnă neapărat nimic. Care este răspunsul real pe care îl vedeți în browser - este un răspuns generat de server/Apache? Un răspuns de eroare implicit? Pagină goală? Care este codul de stare HTTP al răspunsului (verificați fila de rețea din instrumentele de dezvoltare ale browserului)... este un 404, 200, 406, ??? Răspunsul ar putea fi de la o regulă mod_security sau ceva?
drapel kz
„`/something%2500else` are ca rezultat și o pagină 404” - este aceeași cu `/boot.ini%2500.htm` sau diferit? Încercați și `/something%2500.htm`.
Antony avatar
drapel ph
În toate cazurile (inclusiv cele mai recente /something%2500.htm) văd răspunsul implicit Apache 404 cu titlul „404 nu a fost găsit” și „Nu a fost găsit: URL-ul solicitat nu a fost găsit pe acest server.” ca body.
drapel kz
Ai acces la configurația serverului?
Antony avatar
drapel ph
Da, serverul este în întregime al meu
drapel kz
În acest caz, care este configurația server/vHost? Ce module ai încărcat? regulile mod_security? Firewall? (Deoparte: dacă acesta este serverul tău, atunci de ce faci atât de multe în `.htaccess`?)
Puncte:0
drapel kz

În toate cazurile, văd răspunsul implicit Apache 404

În acest caz, cererea cu siguranță nu este procesată de Codeigniter. Se pare că 404 este declanșat de serverul Apache, înainte .htaccess este chiar procesat. Acest lucru este foarte probabil declanșat de ceva de genul mod_security (ar putea exista un indiciu în antetele răspunsului HTTP).

URL-uri care conțin % poate reprezenta o amenințare la securitate. Deci nu ar fi neapărat atât de neobișnuit să existe o regulă generală pe server care pur și simplu blochează aceste solicitări. Dacă nu aveți acces la configurația serverului într-o formă oarecare, atunci este puțin probabil să puteți face ceva pentru a influența acest lucru.

Dar deja returnează un 404. Și un 404 este un 404 până la urmă, așa că nu va face nicio diferență pentru roboți. Și real oricum utilizatorii nu ar trebui să facă astfel de solicitări.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.