AMcoder - javascript, python, java, html, php, sql

Անապահով օբյեկտի հղում java վեբ հավելվածում

Ես ստեղծում եմ վեբ հավելված java-ով։ Այն վերաբերում է մի քանի բիզնես օբյեկտների, որոնք մոդելավորվում են հավելվածում: Յուրաքանչյուր օբյեկտ ունի իր հետ կապված աղյուսակը տվյալների բազայում: Ես ուզում եմ ցույց տալ կոնկրետ օբյեկտի մանրամասները, ասենք, օրինակ. Ուսանողից օգտվողին: Դրա համար ես ajax հարցում եմ կատարում սերվերին և որպես մուտքային պարամետր փոխանցում եմ UserId-ը: Psuedocode-ը նման է ստորև տրվածին.

1) Get StudentId from request.
2) Fetch Student details from db for given studentId
3) Send the student data as response to the user

Իմ ուզածն այն է, որ StudentId-ը չպետք է օգտագործվի, և դրա փոխարեն կարող է օգտագործվել պատահական համար կամ որևէ այլ բան, որը կարող է քարտեզագրվել սերվերի կողմից ուսանողի ID-ին և, հետևաբար, ուսանողի տվյալները վերցվել և ուղարկվել հաճախորդին: Ես ուզում եմ սա այնպես, որ նույնիսկ եթե studentId-ը հղված/փոփոխված է օգտագործողի կողմից, որպես հարցման տողի մաս, օգտվողը չստանա ուսանողի որևէ այլ տվյալ, և այդպիսով, սխալի հաղորդագրություն ցուցադրվի նրան:


  • Ինչո՞ւ չհաստատել, որ ներկայիս օգտվողին թույլատրված է մուտք գործել տվյալ ուսանողի փոխարեն: 14.03.2016
  • Միգուցե օգտակար լինի. stackoverflow.com/ հարցեր/35817200/ 14.03.2016
  • Օգտագործեք Spring Security ACL-ը 14.03.2016

Պատասխանները:


1

Մեկ կրակոցի լուծումը owasp esapi մուտքի տեղեկատու քարտեզի օգտագործումն է, այն ձեզ դուր կգա :)

https://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/AccessReferenceMap.html

16.03.2016

2

Առանց նույնականացման ինչ-որ ձևի, հարձակվողը կարող է պարզապես փորձել տարբեր արժեքներ StudentId-ի համար, մինչև գտնեն այն, որն աշխատում է: Սա կրկնելով՝ նրանք կկարողանան թվարկել տարբեր StudentIds-ները և ստանալ ուսանողի բոլոր տվյալները: Օգտագործողը պետք է կարողանա մուտք գործել միայն այն գրառումները, որոնց հասանելի է: Ես խստորեն խորհուրդ կտայի կիրառել նույնականացման ամուր մեթոդ:

Այնուամենայնիվ, եթե դուք չեք կարող իրականացնել նույնականացման մեխանիզմ, կարող եք փորձել ավելի դժվարացնել թվարկման գործընթացը: Դա անելու եղանակներից մեկը կլինի պատահականորեն նշանակել StudentIds (Գերմանական տանկի խնդիրը խուսափելու համար) և դարձնել դրանք այնքան երկար, որքան գործնական է: Երկար, պատահական տողի նման ինչ-որ բան հիանալի ID կդարձնի: Նկատի ունեցեք, որ որքան շատ օգտվողներ ունենաք, այնքան ավելի քիչ արդյունավետ կլինի ձեր տվյալները «պաշտպանելու» համար: Բացի այդ, այս մեթոդը իրականում չի ապահովում ձեր տվյալները, այն պարզապես (տեսականորեն) ավելի դժվարացնում է հարձակվողի համար այդ բոլորը վերականգնելը: Եթե ​​նրանք գուշակեն ճիշտ ID-ն, նրանք դեռ կարող են ստանալ տվյալներ, որոնք չպետք է ստանային:

Բացի այդ, քանի որ դուք օգտագործում եք Java, կարող եք օգտագործել PreparedStatements և պարամետրերի կապում SQL ներարկման հարձակումներից խուսափելու համար:

14.03.2016
  • Նկատի ունեցեք, որ GUID-ները եզակի են, ոչ պատահական: Նույնը վերաբերում է UUID-ներին. ճշգրտման մեջ իրականում չի նշվում, որ դրանք պետք է ստեղծվեն գաղտնագրորեն ապահով կեղծ պատահական թվերի գեներատորից: 15.03.2016
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..