(1) අතරතුර ගූගල් සූදානම් වන්නේ ඇයි? ඔවුන්ගේ JSON ප්‍රතිචාර වලට?


4081

ගූගල් while(1);ඔවුන්ගේ (පුද්ගලික) JSON ප්‍රතිචාර වලට සූදානම් වන්නේ ඇයි?

උදාහරණයක් ලෙස, ගූගල් දින දර්ශනයේ දින දර්ශනයක් සක්‍රිය සහ අක්‍රිය කරන අතරතුර ප්‍රතිචාරයක් මෙන්න :

while (1);
[
  ['u', [
    ['smsSentFlag', 'false'],
    ['hideInvitations', 'false'],
    ['remindOnRespondedEventsOnly', 'true'],
    ['hideInvitations_remindOnRespondedEventsOnly', 'false_true'],
    ['Calendar ID stripped for privacy', 'false'],
    ['smsVerifiedFlag', 'true']
  ]]
]

මම හිතන්නේ මෙය මිනිසුන් විසින් සිදු කිරීම වැළැක්වීම සඳහා යැයි මම සිතමි eval(), නමුත් ඔබට ඇත්ත වශයෙන්ම කළ යුතුව ඇත්තේ එය ප්‍රතිස්ථාපනය කිරීම පමණි while. මම හිතන්නේ එවාල් වැළැක්වීම යනු මිනිසුන් ආරක්ෂිත JSON විග්‍රහ කිරීමේ කේතය ලිවීමට වග බලා ගැනීමයි.

මෙය වෙනත් ස්ථාන කිහිපයක භාවිතා කර ඇති බව මම දැක ඇත්තෙමි, නමුත් ගූගල් (තැපැල්, දින දර්ශනය, සම්බන්ධතා යනාදිය) සමඟ තවත් බොහෝ දේ පුදුම සහගතය, ගූගල් ඩොක්ස්&&&START&&& ඒ වෙනුවට ආරම්භ වන අතර ගූගල් සම්බන්ධතා ආරම්භ වන බව පෙනේ while(1); &&&START&&&.

මොකද මෙතන වෙන්නෙ?


46
ඔබේ පළමු හැඟීම නිවැරදි යැයි මම විශ්වාස කරමි. ඔබ කේතය සෙවීම ආරම්භ කර ප්‍රභවය මත පදනම්ව ආදාන ප්‍රවාහය කැපීමට උත්සාහ කරන්නේ නම්, ඔබ නැවත සලකා බලා එය ආරක්ෂිත (සහ ගූගල්ගේ ක්‍රියා නිසා පහසු) ආකාරයෙන් කරන්න.
එස්ටෙබන් කොබර්

35
බොහෝ විට පසු විපරම් ප්‍රශ්නයක්: )]}'ඒ වෙනුවට ගූගල් දැන් සූදානම් වන්නේ while(1);ඇයි? පිළිතුරු සමාන වේද?
ගිස්මෝ

3
එවාල් වලක්වනු ඇත, නමුත් අසීමිත පුඩුවක් සමඟ නොවේ.
මාර්ඩොක්ස්

10
මෙය එක් බයිට් එකක් ඉතිරි කරන )]}'ෆේස්බුක් වැනි බයිට් සුරැකීමට ද විය හැකිය for(;;);:)
ග්‍රාස් ඩබල්

4
Json අනාවරණය කිරීම වැළැක්වීම සඳහා වන JSON hijacking
අක්‍රමිකතාව

Answers:


4296

එය වලක්වන JSON පරිග්රහණයට , නිල වශයෙන් බව ප්රධාන JSON ආරක්ෂක ප්රශ්නය ස්ථාවර ප්රධාන බ්රව්සරයන් තුළ 2011 වසරේ සිට සම්මතයන් 5.

ප්‍රතිවිරුද්ධ උදාහරණය: ගූගල් සතුව mail.google.com/json?action=inboxඔබගේ එන ලිපි වල පළමු පණිවිඩ 50 JSON ආකෘතියෙන් ලබා දෙන URL එකක් ඇති බව පවසන්න . එකම වසම් ප්‍රතිපත්තියක් නිසා වෙනත් වසම්වල ඇති නපුරු වෙබ් අඩවි වලට මෙම දත්ත ලබා ගැනීම සඳහා AJAX ඉල්ලීම් කළ නොහැක, නමුත් ඔවුන්ට <script>ටැගය හරහා URL ඇතුළත් කළ හැකිය . ඔබගේ කුකීස් සමඟ යූආර්එල් වෙත පිවිසෙන අතර , ගෝලීය අරාව සාදන්නා හෝ ප්‍රවේශක ක්‍රම ඉක්මවා යාමෙන් ඔවුන්ට වස්තුවක් (අරාව හෝ හැෂ්) ගුණාංගයක් සකසා ඇති සෑම අවස්ථාවකම කැඳවුම් ක්‍රමයක් තිබිය හැකි අතර එමඟින් ඔවුන්ට JSON අන්තර්ගතය කියවීමට ඉඩ ලබා දේ.

මෙය while(1);හෝ &&&BLAH&&&වලක්වනු ලැබේ: AJAX ඉල්ලීමකට mail.google.comපෙළ අන්තර්ගතයට පූර්ණ ප්‍රවේශයක් ඇති අතර එය ඉවත් කළ හැකිය. නමුත් <script>ටැග් ඇතුළත් කිරීමක් කිසිදු සැකසුමකින් තොරව ජාවාස්ක්‍රිප්ට් අන්ධ ලෙස ක්‍රියාත්මක කරයි, එහි ප්‍රති ing ලය වන්නේ අසීමිත ලූපයක් හෝ සින්ටැක්ස් දෝෂයකි.

හරස් අඩවි ඉල්ලීම් වංචා කිරීමේ ගැටළුව මෙයින් විසඳන්නේ නැත .


228
මෙම දත්ත ලබා ගැනීමට කරන ඉල්ලීමට ඒ වෙනුවට CSRF- ටෝකනයක් අවශ්‍ය නොවන්නේ ඇයි?
ජකුබ් පී.

235
කරන්නේ for(;;);එකම රස්සාව කරන්න? ෆේස්බුක් හි අජැක්ස් ප්‍රතිචාර වලින් මම මෙය දැක ඇත්තෙමි.
ජූලියන් රජු

183
Ak ජකුබ් පී. ගූගල් පරිමාණයෙන් CSRF- ටෝකන ගබඩා කිරීම හා නඩත්තු කිරීම සඳහා විශාල යටිතල පහසුකම් සහ පිරිවැය අවශ්‍ය වේ.
ඒබ්‍රහම්

127
Ak ජකුබ් පී. CSRF විරෝධී ටෝකන හැඹිලි සමඟ අවුල් වන අතර, ගුප්ත ලේඛන ඇගයීමේ සේවාදායකයේ යම් ප්‍රමාණයක් අවශ්‍ය වේ. ගූගල් පරිමාණයෙන්, ඒ සඳහා විශාල CPU අවශ්‍ය වේ. මේ ආකාරයේ සේවාදායකයා වෙත එය පටවනු ලැබේ.
බ්ලූස්මූන්

96
වඩා හොඳ ක්‍රමයක් වනුයේ නිවැරදි ශීර්ෂකය සකසා ඇත්නම් පමණක් සේවාදායකයාට JSON යැවීමට ඉඩ දීමයි. ඔබට එය AJAX ඇමතුමකින් කළ හැකිය, නමුත් ස්ක්‍රිප්ට් ටැග් සමඟ නොවේ. ඒ ආකාරයෙන්, සංවේදී තොරතුරු කිසි විටෙකත් යවනු නොලැබේ, ඔබ බ්‍රව්සරයේ ආරක්ෂාව මත විශ්වාසය තැබිය යුතු නැත.
mcv

575

එය 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 යැවීම වළක්වා ගැනීම සඳහා ක්‍රම දෙකටම සේවාදායක පාර්ශවීය වෙනස්කම් අවශ්‍ය වේ.


23
OWASP නිර්දේශය සිත්ගන්නා සුළු වන්නේ එහි සරල බව නිසාය. ගූගල් මාර්ගය වඩාත් ආරක්ෂිත වීමට හේතුවක් කිසිවෙකු දන්නවාද?
funroll

18
එය කිසිදු ආකාරයකින් වඩා ආරක්ෂිත නොවන බව මම විශ්වාස කරමි . මෙහි OWASP සැපයීම +1 සඳහා හොඳ හේතුවක් ලෙස පෙනේ.

30
වස්තුවක් වචනානුසාරයෙන් ආපසු යැවීම ටැගය හෝ ක්‍රියාකාරීත්වය අසමත් වන්නේ මන්දැයි සඳහන් කිරීම වටී . වරහන් කේත බ්ලොක් එකක් හෝ වචනාර්ථයෙන් වස්තුවක් ලෙස අර්ථ දැක්විය හැකි අතර, ජාවාස්ක්‍රිප්ට් විසින් කලින් ඇති දේට වැඩි කැමැත්තක් දක්වයි. කේත වාරණයක් ලෙස එය ඇත්ත වශයෙන්ම අවලංගුය. මෙම තර්කනය අනුව, අනාගත බ්‍රව්සරයේ හැසිරීමේ අපේක්ෂිත වෙනස්කම් මට නොපෙනේ. scripteval{}
මැන්ගෝ

16
නරක කේතය ප්‍රමාණවත් නොවේ, ප්‍රහාරකයාට බ්‍රව්සරයේ ස්ක්‍රිප්ට්-දෝෂ හසුරුවන්නා පැහැර ගත හැකිය ( window.onerror) onerrorසින්ටැක්ස් දෝෂ සමඟ හැසිරීම කුමක්දැයි මට විශ්වාස නැත . මම හිතන්නේ ගූගල් වලටත් විශ්වාස නෑ.
oriadam

12
"වලංගු JSON වස්තුවක්, කිසිවක් සම්බන්ධ කර නොමැති විට, ජාවාස්ක්‍රිප්ට් හි වලංගු නොවේ:" - හිස් වස්තුවක ( {}) සුළු සිද්ධිය හැර , වලංගු හිස් කොටසකි. වස්තුව හිස් බව දැන ගැනීම වටිනා තොරතුරු විය හැකි නම්, මෙය සූරාකෑමට ලක්විය හැකිය.

371

මෙය ඔබගේ දත්ත සොරකම් කිරීමට වෙනත් වෙබ් අඩවියකට අප්රසන්න උපක්රම කළ නොහැකි බව සහතික කිරීමයි. නිදසුනක් ලෙස, අරාව සාදන්නා ප්‍රතිස්ථාපනය කිරීමෙන් , පසුව මෙම JSON URL <script>ටැගය හරහා ඇතුළත් කිරීමෙන් , අනිෂ්ට තෙවන පාර්ශවීය වෙබ් අඩවියකට JSON ප්‍රතිචාරයෙන් දත්ත සොරකම් කළ හැකිය. while(1);ආරම්භයේ දී තැබීමෙන් , ස්ක්‍රිප්ට් එක එල්ලනු ඇත.

XHR සහ වෙනම JSON විග්‍රහකයක් භාවිතා කරමින් එකම අඩවි ඉල්ලීමක්, අනෙක් අතට, while(1);උපසර්ගය පහසුවෙන් නොසලකා හැරිය හැක .


6
තාක්ෂණික වශයෙන්, "සාමාන්‍ය" JSON විග්‍රහකයෙකු ඔබට උපසර්ගයක් තිබේ නම් දෝෂයක් ලබා දිය යුතුය.
මැතිව් ක්‍රම්ලි

12
ප්‍රහාරකයින් භාවිතා කරන්නේ <script>එක්ස්එච්ආර් නොව සාමාන්‍ය පැරණි අංගයකි.
ලෝරන්ස් ගොන්සාල්ව්ස්

9
Att මැතිව්, විශ්වාසයි, නමුත් JSON විග්‍රහකය වෙත දත්ත යැවීමට පෙර ඔබට එය ඉවත් කළ හැකිය. ඔබ සමග ඒක කරන්න බැහැ <script>ටැගය
bdonlan

7
මේ සඳහා උදාහරණ තිබේද? අරාව සාදන්නා වෙනුවට නැවත යොමු කරනු ලැබේ, නමුත් එය දෝෂයකි. ස්ක්‍රිප්ට් ටැගය හරහා ලැබෙන දත්ත වලට යමෙකුට ප්‍රවේශ විය හැක්කේ කෙසේදැයි මට තේරෙන්නේ නැත. මෑත බ්‍රව්සරයේ ක්‍රියාත්මක වන ව්‍යාජ ක්‍රියාත්මක කිරීමක් දැකීමට මා කැමතිය.
ඩෙනිස් ජී

7
@ ජොයෙල්ටයින්, නැහැ, එය එසේ නොවේ. Stackoverflow.com/questions/16289894/… බලන්න .

111

තෙවන පාර්ශවයකට <script>ටැගය සහිත HTML ලේඛනයකට JSON ප්‍රතිචාරය ඇතුළත් කිරීම දුෂ්කර වනු ඇත . <script>ටැගය එකම ප්‍රභව ප්‍රතිපත්තියෙන් නිදහස් බව මතක තබා ගන්න .


21
මෙය පිළිතුරෙන් අඩක් පමණි. එය Objectසහ Arrayඉදිකිරීම්කරුවන් අභිබවා යාමේ උපක්‍රමයක් නොවන්නේ නම් , වලංගු JSON ප්‍රතිචාරයක් ජාවාස්ක්‍රිප්ට් ලෙස ක්‍රියාත්මක කිරීම සෑම තත්වයකදීම මුළුමනින්ම අහිංසක වනු ඇත. ඔව්, ටැගයක් while(1);මගින් ඉලක්ක කර ඇත්නම් ප්‍රතිචාරය ජාවාස්ක්‍රිප්ට් ලෙස ක්‍රියාත්මක වීම වළක්වයි <script>, නමුත් එය අවශ්‍ය වන්නේ මන්දැයි ඔබේ පිළිතුර පැහැදිලි නොකරයි.
මාර්ක් අමරි

නමුත් එය අයිෆ්‍රේම් වලක්වා ගන්නේ කෙසේද
රවින්දර් පයාල්

ස්ක්‍රිප්ට් ටැගය කිසි විටෙකත් එකම මූල ප්‍රතිපත්තියෙන් නිදහස් නොවේ. ඔබට එය මා වෙනුවෙන් පැහැදිලි කළ හැකිද?
සුරාජ් ජේන්

82

සටහන : 2019 වන විට, මෙම ප්‍රශ්නයේ සාකච්ඡා කර ඇති වැළැක්වීමේ පියවරයන්ට තුඩු දෙන බොහෝ පැරණි අවදානම් තවදුරටත් නවීන බ්‍රව්සර්වල ගැටලුවක් නොවේ. මම පහත පිළිතුර the තිහාසික කුතුහලයක් ලෙස තබමි, නමුත් ඇත්ත වශයෙන්ම මෙය ඇසූ විට 2010 (!!) සිට සමස්ත මාතෘකාවම රැඩිකල් ලෙස වෙනස් වී ඇත.


එය සරල ඉලක්කයක් ලෙස භාවිතා කිරීම වළක්වයි <script> ටැගයක . .

සංස්කරණය කරන්න - සටහන සටහන් කරන්න (සහ වෙනත් පිළිතුරු). ගැටළුව සම්බන්ධ වී ඇත්තේ යටපත් කළ පහසුකම්, විශේෂයෙන් Objectසහ Arrayඉදිකිරීම්කරුවන් සමඟ ය. අහිංසක JSON විග්‍රහ කරන විට ප්‍රහාරක කේතය අවුලුවන පරිදි ඒවා වෙනස් කළ හැකිය.


17
මෙය පිළිතුරෙන් අඩක් පමණි. එය Objectසහ Arrayඉදිකිරීම්කරුවන් අභිබවා යාමේ උපක්‍රමයක් නොවන්නේ නම් , වලංගු JSON ප්‍රතිචාරයක් ජාවාස්ක්‍රිප්ට් ලෙස ක්‍රියාත්මක කිරීම සෑම තත්වයකදීම මුළුමනින්ම අහිංසක වනු ඇත. ඔව්, ටැගයක් while(1);මගින් ඉලක්ක කර ඇත්නම් ප්‍රතිචාරය ජාවාස්ක්‍රිප්ට් ලෙස ක්‍රියාත්මක වීම වළක්වයි <script>, නමුත් එය අවශ්‍ය වන්නේ මන්දැයි ඔබේ පිළිතුර පැහැදිලි නොකරයි.
මාර්ක් අමරි

11

සිට <script>ටැගය, වෙබ් ලෝකයේ ආරක්ෂක අවශ්යතාව වන එකම සම්භවයකින් ප්රතිපත්ති නිදහස් වන while(1)තුළ එහි JSON ප්රතිචාර තට්ටය පෑදීම අනිසි ලෙස එකතු වූ විට <script>ටැගය.


0

සත්‍යාපනය ක්‍රියාත්මක වූ පසු, JSON කොල්ලකෑමේ ආරක්ෂාව විවිධ ආකාර ගත හැකිය. (1) ඔවුන්ගේ JSON දත්ත තුළට ගූගල් එකතු කරයි, එවිට කිසියම් අනිෂ්ට පිටපතක් එය ඇගයීමට ලක් කරන්නේ නම්, අනිෂ්ට පිටපත අනන්ත පුඩුවක් තුළට ඇතුළු වේ.

යොමුව: වෙබ් ආරක්ෂණ පරීක්ෂණ කුක් පොත: ඉක්මනින් ගැටලු සොයා ගැනීමට ක්‍රමානුකූල ක්‍රම

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.