Puncte:0

De ce gazdele dezactivează fpassthru() PHP?

drapel ru

Am lucrat la o aplicație PHP care folosește fpassthru funcție încorporată, care citește conținutul dintr-un stream sau un indicator de fișier și le trimite în buffer-ul de ieșire. Este foarte asemănător cu readfile funcție, dar îmi permite să pornesc ieșirea la un anumit offset.

Majoritatea furnizorilor de găzduire cu care mi-am testat produsul, au funcționat foarte bine, iar aceștia includ medii de găzduire partajate cu mai mulți chiriași. Totuși, am găsit câteva care au fpassthru() funcția „dezactivată din motive de securitate”. Am petrecut ore întregi cercetând de ce cineva ar dezactiva fpassthru funcția, dar nu și funcții precum fopen, friad, file_get_contents, precum și readfile, dar chiar nu am găsit nimic util.

Probabil că sună aiurea, dar cea mai apropiată presupunere este că aceste gazde au fost dezactivate fpassthru confundandu-l cu trece prin, care într-adevăr justifică dezactivarea, mai ales în mediile partajate. Acestea fiind spuse, actualul trece prin funcția (împreună cu exec și restul familiei) au fost, de asemenea, dezactivați pe aceste gazde.

Am încercat să contactez aceste gazde și i-am întrebat de ce.

Nu am putut trece peste vânzările de la Flywheel, ei au spus că nu pot răspunde la întrebarea mea și doar suportul poate. Și pentru a contacta asistența trebuie să devin client. Clasic.

RunCloud mi s-a părut puțin mai promițător la început, am ajuns la un „Inginer de sisteme de nivel 3” și a durat câteva zile pentru a ajunge la un „Inginer de sisteme Sr.” de la care am primit următoarea declarație:

este cea mai bună practică pentru PHP pe RunCloud și este cea mai bună practică pentru noi

Le-am rugat să detalieze, dar nu am mai auzit de ceva vreme, așa că mi-am pierdut speranța.

Doar pentru a clarifica, nu caut căi de ocolire fpassthru(). Caut motive pentru care este listat ocazional alături de funcții „periculoase”, cum ar fi exec(), sistem(), trece prin(), pcntl_fork() si altele, in timp ce avand readfile(), file_get_contents(), etc. funcționează bine.

Dacă aveți informații, vă rugăm să împărtășiți!

drapel jp
probabil că vrei să întrebi asta pe https://security.stackexchange.com/
drapel cn
Ce se întâmplă dacă solicitați o compensare în afara intervalului de fișiere? Citește memoria arbitrară?
drapel ru
@shearn89 nu puteți specifica în mod explicit offset-ul în fpassthru(). Citește de unde este indicatorul curent către EOF. Pentru a compensa efectiv, va trebui să utilizați fread() de fseek().
Puncte:1
drapel cn
Bob

Nu subestimați puterea programatorilor și administratorilor de sisteme cargo cult.

Este posibil ca furnizorii să fi avut probleme specifice în trecut care au necesitat dezactivarea unei anumite funcții și pur și simplu continuă să o facă astăzi, pur și simplu pentru că compania lor „a făcut întotdeauna acest lucru”. Și nimeni care lucrează acolo nu știe acum evenimentul istoric real care a fost motivul din spatele acestuia.
Să nu mai vorbim dacă acest raționament este valabil și astăzi.

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.