Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 20025|Odpoveď: 0

[ASP.NET] ASP.NET prechod parametrov, limity dĺžky a bezpečnostné opatrenia pri používaní.

[Kopírovať odkaz]
Zverejnené 8. 3. 2018 10:18:07 | | | |
1. Príčiny problému
V prílohe "Post-Release Problems" v štatistikách chýb po vydaní projektu sú:   



Ako akumulácia skúseností budú tieto problémy, príčiny a riešenia zahrnuté do kontrolného zoznamu, potom:
Prvá otázka: Je horná hranica parametra URL presná referencia? Aký je horný limit?
Druhá otázka: Prečo je pri POST limite na dáta? Je limit 128 000?  
2. Analýza problému
1. Prvá:
1) V URL neexistuje horná hranica parametrov. Problém je v tom, že IE má limit dĺžky na URL adresách.
2) Špecifikácia HTTP protokolu tiež neobmedzuje dĺžku URL. Toto obmedzenie je obmedzenie stanovené konkrétnym prehliadačom a serverom. IE má limit dĺžky URL 2083 bajtov (2K+35). Pre iné prehliadače ako Netscape, FireFox a podobne neexistuje teoretický limit dĺžky a jeho limit závisí od podpory operačného systému. [Ref. 1]
3) "Parametre s premenlivou dĺžkou sa prenášajú cez URL" v skutočnosti znamená, že pri odosielaní formulára sa používa metóda GET, nie metóda POST. Príčinou tejto potenciálnej chyby je použitie metódy GET na odosielanie údajov z formulára. Pretože metóda GET posiela dáta v URL serveru na spracovanie.
4) Upozorňujeme, že tento limit je celá dĺžka URL, nie len dĺžka dát parametra.
5) Keďže IE má limit na dĺžku URL, metóda GET aj POST majú toto obmedzenie.
(Podrobnosti o metódach GET a POST v FORM [Ref. 2]) si prosím pozrite súvisiaci dokument)  
Odporúčania:
1) Pochopiť prostredie, v ktorom sa aplikácia nachádza, napríklad prehliadač a serverové prostredie webovej aplikácie, a pochopiť jej špecifické obmedzenia parametrov.
2) Používať metódu POST čo najviac na odosielanie zložitých údajov. Poznámka: Ak FORM nezapisuje atribút metódy, predvolene sa používa metóda GET.
Záver (píšte podľa kontrolného zoznamu):
Pri odosielaní dát pomocou metódy GET je potrebné zohľadniť limit dĺžky URL 2083 bajtov v prostredí IE.
2. Druhá:
1) Teoreticky POST nemá limit veľkosti. Špecifikácia HTTP protokolu tiež nemá žiadne obmedzenie veľkosti.
2) "Existuje limit veľkosti 128K pre POST dáta" nie je dostatočne presný, neexistuje žiadny limit pre POST dáta a výpočtový výkon procesora servera zohráva obmedzujúcu úlohu.
3) Pre programy ASP existuje limit dĺžky dát 100K, keď objekt Request spracováva každé pole formulára. Ale s Request.BinaryRead takéto obmedzenie neexistuje. Pre riešenia, ktoré vyžadujú spracovanie viac ako 100K doménových dát, pozrite si [Ref. 3] nižšie.
4) V dôsledku toho Microsoft pre IIS 6.0 zvýšil obmedzenia z bezpečnostných dôvodov [Ref. 4]. Musíme tiež venovať pozornosť:
   IIS 6.0 štandardne poskytuje maximálne 200 KB ASP POST dát a limit je 100 KB na pole formulára.
    Predvolená veľkosť uploadových súborov v IIS 6.0 je 4MB.
    IIS 6.0 predvolene nastavuje maximálnu hlavičku požiadaviek 16KB.
    Tieto obmedzenia neboli dostupné pred IIS 6.0.
Odporúčania:
1) Poznanie predvolených nastavení bežiaceho prostredia vám pomôže navrhovať a rýchlo riešiť problémy, ktoré vzniknú.
2) Mala by sa zvážiť verzia servera. Každá verzia IIS má odlišné predvolené nastavenia týchto parametrov, takže ak je to potrebné, nájdite informácie a zostavte porovnávaciu tabuľku. Týmto spôsobom existuje referencia na vývoj a testovanie.
3) Tieto obmedzenia IIS 6.0 sú v skutočnosti len jeho predvolené nastavenia, ktoré môžete upravovať priamo v aplikačnom prostredí.
    V WINNT/system32/inetsrv/MetaBase.xml je predvolená definícia:
        AspBufferingLimit="4194304" zodpovedá maximálnej veľkosti nahraného súboru
        AspMaxRequestEntityAllowed="204800" zodpovedá maximálnemu množstvu dát v POST
        ...
Záver (píšte podľa kontrolného zoznamu):
Pri používaní ASP je potrebné zohľadniť, že POST formulár má limit 100KB na pole pre všeobecné spracovanie čítania. Zvážte, či použiť Request.Binary.





Predchádzajúci:asp.net mvc nastaví príspevok formulára tak, aby umožnil odoslanie HTML
Budúci:System.Linq.Dynamic
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com