එය JSON කොල්ලකෑම හරහා ප්රතිචාරය අනාවරණය කිරීම වළක්වයි.
න්යායට අනුව, HTTP ප්රතිචාරවල අන්තර්ගතය එකම මූල ප්රතිපත්තියක් මගින් ආරක්ෂා කර ඇත: එක් වසමක පිටුවලට අනෙක් වසමේ පිටු වලින් කිසිදු තොරතුරක් ලබා ගත නොහැක (පැහැදිලිවම අවසර දී නොමැති නම්).
ප්රහාරකයාට ඔබ වෙනුවෙන් වෙනත් වසම්වල පිටු ඉල්ලා සිටිය හැකිය, උදා: <script src=...>
හෝ <img>
ටැගයක් භාවිතා කිරීමෙන් , නමුත් එයට ප්රති result ලය පිළිබඳ කිසිදු තොරතුරක් ලබා ගත නොහැක (ශීර්ෂයන්, අන්තර්ගතයන්).
මේ අනුව, ඔබ ප්රහාරකයාගේ පිටුවකට පිවිසෙන්නේ නම්, එයට ඔබගේ විද්යුත් තැපෑල gmail.com වෙතින් කියවිය නොහැක.
JSON අන්තර්ගතය ඉල්ලා සිටීමට ස්ක්රිප්ට් ටැගයක් භාවිතා කරන විට හැර, ප්රහාරකයාගේ පාලිත පරිසරයක JSON Javascript ලෙස ක්රියාත්මක වේ. ප්රහාරකයාට අරා හෝ වස්තු ඉදිකිරීම්කරු හෝ වස්තු ඉදිකිරීමේදී භාවිතා කරන වෙනත් ක්රමයක් ආදේශ කළ හැකි නම්, JSON හි ඇති ඕනෑම දෙයක් ප්රහාරකයාගේ කේතය හරහා ගොස් අනාවරණය වනු ඇත.
මෙය සිදු වන්නේ JSON ජාවාස්ක්රිප්ට් ලෙස ක්රියාත්මක කරන අවස්ථාවේදී මිස එය විග්රහ කරන අවස්ථාවේදී නොවන බව සලකන්න.
බහු ප්රතිවිරෝධතා ඇත:
JSON කිසි විටෙකත් ක්රියාත්මක නොවන බවට වග බලා ගැනීම
while(1);
JSON දත්තයට පෙර ප්රකාශයක් තැබීමෙන් , JSON දත්ත කිසි විටෙකත් Javascript ලෙස ක්රියාත්මක නොවන බවට ගූගල් වග බලා ගනී.
නීත්යානුකූල පිටුවකට පමණක් සම්පූර්ණ අන්තර්ගතය ලබා ගත හැකි අතර while(1);
, ඉතිරි කොටස JSON ලෙස විග්රහ කළ හැකිය.
for(;;);
උදාහරණයක් ලෙස ෆේස්බුක් හි දැක ඇති දේ , එකම ප්රති .ල සමඟ.
JSON වලංගු නොවන Javascript නොවන බවට වග බලා ගැනීම
ඒ හා සමානව, JSON ට පෙර අවලංගු ටෝකන එකතු කිරීම &&&START&&&
, එය කිසි විටෙකත් ක්රියාත්මක නොවන බවට වග බලා ගනී.
සෑම විටම පිටතින් ඇති වස්තුවක් සමඟ JSON වෙත ආපසු යන්න
JSON පැහැරගැනීම් වලින් ආරක්ෂා වීමට මෙය OWASP
නිර්දේශිත ක්රමයක් වන අතර එය අඩු ආක්රමණශීලී ක්රමයකි .
පෙර ප්රති-මිනුම් වලට සමානව, JSON කිසි විටෙකත් ජාවාස්ක්රිප්ට් ලෙස ක්රියාත්මක නොවන බවට එය සහතික කරයි.
වලංගු JSON වස්තුවක්, කිසිවක් සම්බන්ධ කර නොමැති විට, Javascript හි වලංගු නොවේ:
eval('{"foo":"bar"}')
// SyntaxError: Unexpected token :
කෙසේ වෙතත් මෙය වලංගු වේ JSON:
JSON.parse('{"foo":"bar"}')
// Object {foo: "bar"}
එබැවින්, ප්රතිචාරයේ ඉහළ මට්ටමින් ඔබ සෑම විටම වස්තුවක් ආපසු ලබා දෙන බවට වග බලා ගන්න, වලංගු JSON ලෙස සිටියදීත්, JSON වලංගු ජාවාස්ක්රිප්ට් නොවන බවට වග බලා ගන්න.
අදහස් දැක්වීමේදී vhvd විසින් සටහන් කර ඇති පරිදි, හිස් වස්තුව {}
වලංගු ජාවාස්ක්රිප්ට් වන අතර, වස්තුව හිස් බව දැන ගැනීමම වටිනා තොරතුරු විය හැකිය.
ඉහත ක්රම සංසන්දනය කිරීම
OWASP මාර්ගය අඩු ආක්රමණශීලී බැවින් එයට ග්රාහක පුස්තකාල වෙනසක් අවශ්ය නොවන අතර වලංගු JSON මාරු කරයි. කෙසේ වෙතත්, අතීත හෝ අනාගත බ්රව්සර් දෝෂ වලට මෙය පරාජය කළ හැකිද යන්න නිශ්චිත නැත. ඕරියාඩම් විසින් සටහන් කර ඇති පරිදි, දෝෂ හැසිරවීමක් හරහා විග්රහ දෝෂයකින් දත්ත කාන්දු විය හැකිද යන්න පැහැදිලි නැත (උදා: window.onerror).
ගූගල් ක්රමයට ග්රාහක පුස්තකාලය ස්වයංක්රීයව අනුක්රමිකකරණයට සහාය වීම අවශ්ය වන අතර බ්රව්සර් දෝෂ පිළිබඳ ආරක්ෂිත යැයි සැලකිය හැකිය.
සංවර්ධකයින් අහම්බෙන් අවදානමට ලක්විය හැකි JSON යැවීම වළක්වා ගැනීම සඳහා ක්රම දෙකටම සේවාදායක පාර්ශවීය වෙනස්කම් අවශ්ය වේ.