Mūsdienu griestu gaismas (kā uzstādīt) - mājas remonta pasniedzējs

Mums ir šīs tīmekļa lietojumprogrammas, kurām vaicājumu virknē ir nepieciešama īpaša informācija. Ja šī informācija netiek sniegta, lietojumprogrammas rada kļūdu. Man šķiet, ka mums tas skaidri jārīkojas ar 404, jo URL bez vaicājuma virknes nenorāda uz esošu lapu.

Šķiet, ka lielākā daļa vadības man nepiekrīt; viņi apgalvo:

Tas nav tāpat kā kaut kas saistīts ar lapu, neiekļaujot pareizos qs. Tātad vienīgie cilvēki, kas nonāktu pie 500 lappuses, ir tie, kas tur devās apzināti vai salauztas copy-paste dēļ.

Vai nav papildu pieskaitāmās summas līdz 500 virs un pārsniedz to, ko mēs varētu redzēt 200 un 404, un ja tā, vai uzbrucējam nebūtu vieglāk iedarbināt DoS, koncentrējoties uz vietrāžiem URL, kas rada kļūdu?

(Šajā gadījumā mēs izmantojam Oracle Weblogic, bet mani interesē vispārējais gadījums.)

Es redzu derīgus argumentus abos veidos. No vienas puses, HTTP / 1.1 standarta 6. sadaļā ir definēti 4xx un 5xx statusa kodi šādi:

  • 4xx: klienta kļūda - pieprasījums satur nepareizu sintaksi vai to nevar izpildīt

  • 5xx: servera kļūda - serveris neizpildīja acīmredzami derīgu pieprasījumu

Šajā gadījumā jūs sakāt, ka URL bez "specifiskas informācijas vaicājuma virknē" nav "acīmredzami derīgs pieprasījums", un šādu nepareizi veidotu pieprasījumu lietojumprogramma nekad nevar izpildīt. Tādējādi formāli šī ir klienta kļūda, un atbildei jābūt statusa kodam 4xx (piemēram, 400 nepareizs pieprasījums vai, iespējams, 404 nav atrasts).

No otras puses, no praktiskā viedokļa nav reāla iemesla neatdot 500 iekšējās servera kļūdas atbildi, ja tas jums ir ērtāk. Jā, tas ir nedaudz dumjš, ka jūsu lietotne būtībā apgalvo, ka URL ir derīgs, taču ar to vienmēr neizdodas rīkoties, taču, pieņemsim, ka atbildes kodi ir domāti datoriem, un datoriem nav nozīmes "dumjš".

Man ir aizdomas, ka praksē vienīgā iespējamā atšķirība starp 400 un 500 atbildēm ir tā, ka dažas meklētājprogrammas, ja kaut kādā veidā saskārušās ar tik nederīgu URL, varenība esiet mazliet mazāk gatavs atkārtot pieprasījumu pēc 400 atbildes nekā pēc 500. Bet pat tas ir diezgan nenozīmīgs lietošanas gadījums.

Es teiktu, ka, ja jums nav cita iemesla izvēlēties vienu vai otru, jums semantiskās precizitātes labad jāizmanto 400 atbildes, bet, ja jūsu lietotne jau ģenerē 500 atbildes, nav reālas vajadzības to mainīt. Tam nav "papildu pieskaitāmās izmaksas" - tas ir tikai skaitlis.

Protams, es neko konkrētu nevaru pateikt par to, kas notiek iekšā jūsu lietotne un tīmekļa serveris. Pilnīgi iespējams, lai arī maz ticams, ka jūsu tīmekļa serveris var izdarīt kaut ko ļoti darbietilpīgu ikreiz, kad redz 500 atbildes, un tādā gadījumā jums patiešām vajadzētu no tām izvairīties. Nedaudz ticamāk ir tas, ka jūsu lietotne var nedaudz tērēt laiku nepareizi veidota pieprasījuma apstrādei, pirms tiek sastapta kļūda. Šajā gadījumā šādu pieprasījumu savlaicīga atklāšana patiešām varētu ietaupīt laiku (bet tikai par nelielu papildu laika cenu katram derīgs pieprasījums). Jebkurā gadījumā man šķiet maz ticams, ka jūsu lietotne vairāk laika pavadīs nederīga pieprasījuma apstrādei nekā derīgu, tāpēc (ja vien derīgus pieprasījumus nav grūti izveidot) potenciālais DoS uzbrucējs varētu jūs vienkārši surogātpastu derīgs pieprasījumus.

500 statusa kodam nav papildu pieskaitāmās izmaksas. Es gribētu apgalvot, ka jūsu pārvaldība ir pareiza, jo lietojumprogramma var pieņemt vaicājumus šajā URL, ja tai ir norādīti atbilstoši argumenti.

404 kļūdas atgriešana 500 kļūdas vietā, lai apkarotu DoS mēģinājumus, patiesībā ir tikai apelācija drošībai, izmantojot neskaidrību.

strādāja par jums: Charles Robertson | Vēlies ar mums sazināties?