ဖိုင်ကိုအနှောင့်အယှက်မပေးထားကြောင်း, သော့ကိုသိသောပါတီသည်မှန်ကန်သောလက်မှတ်ကိုဖန်တီးနိုင်သည်ကိုစစ်ဆေးနိုင်သည်။ ရိုးရှင်းသောဆေးထည့်ခြင်းနှင့်မတူသည် (sha256), HMAC သည်အတုကိုတားဆီးရန်သော့များကိုအသုံးပြုသည်။
ဖိုင်များကိုတင်ခြင်းအတွက်မှန်ကန်သောဖြစ်စဉ်သည်များသောအားဖြင့်ဖြစ်သည်။
မျှဝေထားသောလျှို့ဝှက်ချက်ကို ထုတ်လုပ် / ဖြန့်ဖြူးပါ (သို့မဟုတ် server-side private key ကိုသုံးပါ);
0 န်ဆောင်မှုခံယူသူ (သို့) ပေးပို့သူသည် HMAC (ဥပမာ, HMAC-sha256) ကိုဖိုင်အတွက်တွက်ချက်သည်။
ဖိုင်ကိုလက်ခံရရှိပြီးနောက်ဆာဗာသည် HMAC ကိုပြန်လည်တွက်ချက်ရန်တူညီသောသော့ကိုအသုံးပြုသည်။ အချိန်ဇယားများနှင့်နှိုင်း ယှဉ်လျှင်လက်မှတ်များ နှင့်ကိုက်ညီမှုကို နှိုင်းယှဉ်ပြီးပွဲစဉ်လိုက်ဖက်သည့်အခါအတည်ပြုချက်ကိုဖြတ်သန်းသွားသည်။
HTTPS မှလက်မှတ်များနှင့်ဖိုင်များကိုအမြဲတမ်းလွှဲပြောင်းပါ။ လက်မှတ်ရေးထိုးမှုများသည် plaintext နှင့်ပြန်လည်အသုံးပြုခြင်းအတွက် HTTP တွင်ခိုးနားထောင်မှုဖြစ်လိမ့်မည်။
hash_hmac_file ($ algo, $ filename, $ cw_output = false = false) သည် HMAC ကိုဖိုင်ပေါ်တွင်တိုက်ရိုက် calculate လုပ်ပြီးစာဖတ်ခြင်းဖိုင်များကိုစာဖတ်ခြင်းဖိုင်များကိုအတွင်း၌တပ်ဆင်ထားသည်။ ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်အဖြစ်သတ်မှတ်ရန်မလိုအပ်ပါ။ ၎င်းသည်အလတ်စားနှင့်ကြီးမားသောဖိုင်များအတွက်သင့်တော်သည်။
server-side verification ကိုမြန်မြန်အကောင်အထည်ဖော်ရန်လိုအပ်သည့်အခါ hash_hmac_file () သည် တိကျသောနှင့်ထိရောက်သောဖြေရှင်းချက်ဖြစ်သည်။ သို့သော်ပိုမိုရှုပ်ထွေးသောအခြေအနေများအတွက် (shard upload ကဲ့သို့သော) အတွက်, block-by-block တွက်ချက်မှုများကိုအကောင်အထည်ဖော်ရန် Hash_init () / hash_update () / hash_final () () / hash_final () () / hash_final () () / hash_final () () / hash_final () / hash_final () () / hash_final ()) ကိုသုံးနိုင်သည်။
အောက်ပါတို့သည်ဘုံအခြေအနေကိုပြသသည် ။ 0 န်ဆောင်မှုခံယူသူသည် File တွင် HMAC ကိုဖျော်ဖြေရန်အတွက်မျှဝေထားသောသော့ကိုအသုံးပြုသည် ။
Enderify_upload.php (ရိုးရှင်းသောဥပမာ) ကိုလက်ခံသည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// verify_upload.php</span></span><span>
</span><span><span class="hljs-comment">// 1) လုံခြုံသောသော့ကိုသိုလှောင်ခြင်း(ဥပမာအားဖြင့်ပတ်ဝန်းကျင် variable တွေကိုသုံးပါ)</span></span><span>
</span><span><span class="hljs-variable">$HMAC_KEY</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getenv</span></span><span>(</span><span><span class="hljs-string">'UPLOAD_HMAC_KEY'</span></span><span>); </span><span><span class="hljs-comment">// ဖြန့်ကျက်နေစဉ်အတွင်းလုံခြုံစွာထားရှိပါ(ပတ်ဝန်းကျင် variable တွေကို / Vault)</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$HMAC_KEY</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">500</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Server misconfiguration."</span></span><span>;
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// 2) client ကိုအတွက်လက်မှတ်ကိုထည့်သွင်းကြောင်းယူဆ HTTP Header: X-File-Signature</span></span><span>
</span><span><span class="hljs-variable">$clientSig</span></span><span> = </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'HTTP_X_FILE_SIGNATURE'</span></span><span>]) ? </span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'HTTP_X_FILE_SIGNATURE'</span></span><span>] : </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$clientSig</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">400</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Missing signature."</span></span><span>;
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>]) || </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'error'</span></span><span>] !== UPLOAD_ERR_OK) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">400</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Upload failed."</span></span><span>;
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// ယာယီတင်ပို့သည့်လမ်းကြောင်း</span></span><span>
</span><span><span class="hljs-variable">$tmpPath</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'tmp_name'</span></span><span>];
</span><span><span class="hljs-comment">// 3) အသုံးပြု hash_hmac_file server-side လက်မှတ်ကိုတွက်ချက်ပါ(အသုံးပြု SHA256)</span></span><span>
</span><span><span class="hljs-variable">$algo</span></span><span> = </span><span><span class="hljs-string">'sha256'</span></span><span>;
</span><span><span class="hljs-variable">$serverSig</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash_hmac_file</span></span><span>(</span><span><span class="hljs-variable">$algo</span></span><span>, </span><span><span class="hljs-variable">$tmpPath</span></span><span>, </span><span><span class="hljs-variable">$HMAC_KEY</span></span><span>);
</span><span><span class="hljs-comment">// 4) အသုံးပြု hash_equals အချိန်ကိုက်ဘေးကင်းလုံခြုံရေးနှိုင်းယှဉ်ပါစေ,သတင်းအချက်အလက်ယိုစိမ့်မှုကိုရှောင်ကြဉ်ပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">hash_equals</span></span><span>(</span><span><span class="hljs-variable">$serverSig</span></span><span>, </span><span><span class="hljs-variable">$clientSig</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">403</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Signature mismatch. File may be tampered."</span></span><span>;
</span><span><span class="hljs-comment">// စာရင်းစစ်မှတ်တမ်းများကိုမှတ်တမ်းတင်နိုင်သည်:အရင်းအမြစ် IP、ဖိုင်နာမည်、အချိန်နှင့်စောင့်ပါ</span></span><span>
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// 5) လက်မှတ်အတည်ပြုအတည်ပြု,ဖိုင်များကိုနောက်ဆုံး directory သို့လုံခြုံစွာရွှေ့ပြီးခွင့်ပြုချက်များကိုသတ်မှတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$dest</span></span><span> = </span><span><span class="hljs-keyword">__DIR__</span></span><span> . </span><span><span class="hljs-string">'/uploads/'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">basename</span></span><span>(</span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'name'</span></span><span>]);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">move_uploaded_file</span></span><span>(</span><span><span class="hljs-variable">$tmpPath</span></span><span>, </span><span><span class="hljs-variable">$dest</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">500</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Failed to store file."</span></span><span>;
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// မလုပ်မနေရမဟုတ်သော:လက်မှတ်ကိုသိမ်းဆည်းပါ/Metadata ကိုနောက်ဆက်တွဲအတည်ပြုရန်ဒေတာဘေ့စ်သို့ပို့သည်</span></span><span>
</span><span><span class="hljs-comment">// $db->insert('uploads', ['name'=>..., 'sig'=>$serverSig, ...]);</span></span><span>
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">200</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Upload verified and stored."</span></span><span>;
</span></span>
0 န်ဆောင်မှုခံယူသူသည်တောင်းဆိုမှုနှင့်အတူ (ထိုကဲ့သို့သော hexadecimal string ကဲ့သို့) လက်မှတ်တန်ဖိုးကိုပေးပို့ရမည်။ နမူနာ hmac မျိုးဆက် (PHP client သို့မဟုတ် command line သရုပ်ပြ):
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// client_sign.php</span></span><span>
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">'shared-secret-key'</span></span><span>;
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">'/path/to/file.bin'</span></span><span>;
</span><span><span class="hljs-variable">$algo</span></span><span> = </span><span><span class="hljs-string">'sha256'</span></span><span>;
</span><span><span class="hljs-variable">$sig</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash_hmac_file</span></span><span>(</span><span><span class="hljs-variable">$algo</span></span><span>, </span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$sig</span></span><span>; </span><span><span class="hljs-comment">// server သို့ SED လက်မှတ်ရေးထိုး</span></span><span>
</span></span>
အမှန်တကယ် http upload တွင်ဖောက်သည်သည် X-file-signature: <sig> header header ကို Martubtrart / form-data data upload သို့မဟုတ်ပုံစံကွင်းဆင်း / ပုံစံ လက်မှတ် ဖြင့်ပို့သည်။
hash_hmac_file () သူ့ဟာသူသည်ကြီးမားသောဖိုင်များကိုကိုင်တွယ်နိုင်သည်။ သို့သော် Sharded upload သို့မဟုတ် upload scolead လုပ်ခြင်းတွင် HMAC များကိုပိတ်ဆို့ခြင်းသို့မဟုတ် segmented hmags အားဖြင့်တွက်ချက်ရန်လိုအပ်သည်။
အားသာချက်များ - ရိုးရှင်းသောအကောင်အထည်ဖော်မှု, ဆိုးကျိုးများ - ၎င်းသည် IO နှင့် disk ကိုသိမ်းပိုက်နိုင်သောဆာဗာပေါ်ရှိဖိုင်များကိုယာယီသိုလှောင်ခြင်း / ပေါင်းစည်းရန်လိုအပ်သည်။
client သည်ပိတ်ပင်တားဆီးမှုတစ်ခုစီအတွက် HMAC ကိုတွက်ချက်ပြီးပိတ်ပင်တားဆီးမှုလက်မှတ်ကိုပေးပို့သည်, ပိတ်ပင်တားဆီးမှုတစ်ခုစီကိုလက်ခံရရှိသည့်အခါဆာဗာသည်ဖိုင်ကိုစစ်ဆေးပြီးနောက်ဆက်တွဲများ။ နောက်ဆုံးပိတ်ပင်တားဆီးမှုကိုအောင်မြင်စွာတင်ထားပြီးပြည့်စုံပြီးပြည့်စုံသောဖိုင်ကိုအတည်ပြုပြီးဖြစ်သည်။
သို့မဟုတ် 0 န်ဆောင်မှုခံယူသူ၏မူလဒေတာများကိုမူလအချက်အလက်များကိုပို့ပြီးအဆုံးတွင်ဖိုင်အပြည့်အစုံကိုအပြည့်အ 0 ပေးလိုက်သည်။
အကယ်. ဆာဗာသည် PHP မှ upload စီးဆင်းမှုကိုတိုက်ရိုက်ဖတ်ပါက (PSR-7 သို့မဟုတ် PHP: //Php: 0 င်သည်) ကို သင် အသုံးပြုသည် ။ ဥပမာ -
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getenv</span></span><span>(</span><span><span class="hljs-string">'UPLOAD_HMAC_KEY'</span></span><span>);
</span><span><span class="hljs-variable">$algo</span></span><span> = </span><span><span class="hljs-string">'sha256'</span></span><span>;
</span><span><span class="hljs-comment">// ဖြစ်ပေါ်လာခြင်း HMAC အစီအစဉ်</span></span><span>
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash_init</span></span><span>(</span><span><span class="hljs-variable">$algo</span></span><span>, HASH_HMAC, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-comment">// ငါတို့ယူဆတယ် php://input သို့မဟုတ်ဖိုင်စီးဆင်းမှုကိုပိတ်ပင်တားဆီးမှုဖြင့်ပိတ်ပင်တားဆီးမှုကိုဖတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'php://input'</span></span><span>, </span><span><span class="hljs-string">'rb'</span></span><span>);
</span><span><span class="hljs-keyword">while</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">feof</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>)) {
</span><span><span class="hljs-variable">$chunk</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fread</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>, </span><span><span class="hljs-number">8192</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$chunk</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) </span><span><span class="hljs-keyword">break</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">hash_update</span></span><span>(</span><span><span class="hljs-variable">$context</span></span><span>, </span><span><span class="hljs-variable">$chunk</span></span><span>);
}
</span><span><span class="hljs-variable">$serverSig</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hash_final</span></span><span>(</span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);
</span><span><span class="hljs-comment">// ထိုအခါနှိုင်းယှဉ် clientSig ...</span></span><span>
</span></span>
ရိုးရှင်းသော HMAC သည်သမာဓိနှင့်စစ်မှန်ကြောင်းအထောက်အထားပြသခြင်းကိုသာ (သော့ချက်ကိုင်ဆောင်ထားသည့်ပါတီမှဆင်းသက်လာသည်) ကိုသာအာမခံနိုင်သည်။ ကာကွယ်မှုနည်းလမ်း:
လက်မှတ်ထိုးသည့်အခါဖိုင်၏ timestamp, nonce (ကျပန်းနံပါတ်), uploader id စသည်တို့ကို အတူတကွလက်မှတ်ရေးထိုးခဲ့သည် ။ ဥပမာ + timestamp + "+ + timestamp +": + + + + nonce နှင့် nonce များ ပို့ခြင်း။
ဆာဗာသည် timestamp ကို စစ်ဆေးသည် (ဥပမာအားဖြင့် 5 မိနစ်ခွင့်ပြုသည်) နှင့်ပြန်လည်ထမင်းမှုကိုကာကွယ်ရန် nonce ကို အသုံးပြုထားခြင်းရှိမရှိစစ်ဆေးသည်။
API အတွက် - အချိန်တိုတောင်းသောကာလအတွက်သက်တမ်းရှိသည့်ကြိုတင်လက်မှတ်ရေးထိုးထားသော upload token ကိုသုံးပါ။ ဆာဗာသည် HMAC ဖိုင်ကိုအတည်မပြုမီတိုကင်၏တရားဝင်မှုကိုစစ်ဆေးသည်။
နမူနာလက်မှတ်အစီအစဉ် (ဖိုင်၏ပြင်ပလက်မှတ်)
0 န်ဆောင်မှုခံယူသူသည်ပထမ ဦး ဆုံး (ဆာဗာမှထုတ်လုပ်သောနှင့်လက်မှတ်ထိုးခြင်း,
သုံးစွဲသူသည်ဖိုင်ကို တင်. အထောက်အထားများနှင့်ဖိုင်များကို HMAC တွင် HMAC တွင်တင်ထားသည်။
ဆာဗာသည်အထောက်အထားများကိုပထမဆုံးအတည်ပြုပြီး file hmac ဖိုင်ကိုစစ်ဆေးသည်။
အဓိကသိုလှောင်မှု - HMAC သော့များသည်သိုလှောင်ရုံများ / ကုဒ်များတွင် hard-coded မလုပ်ရ။ ပတ် 0 န်းကျင်ဆိုင်ရာ variable များကို အသုံးပြု. configuration files သို့မဟုတ်အထူးပြုသော့ခလောက်စနစ်များ (Vault, Cloud KMS) ကိုအသုံးပြုပါ။
အနည်းဆုံးခွင့်ပြုချက်များ - သော့ချက်၏အသုံးပြုမှုနှင့်ခွင့်ပြုချက်များကိုအနည်းဆုံးခွင့်ပြုသင့်သည်။ ကွဲပြားခြားနားသောသော့များကိုမတူကွဲပြားသောအသုံးပြုမှုကိုသတ်မှတ်နိုင်ပါက (တင်ပါ) ကိုအခြား 0 န်ဆောင်မှုသော့များနှင့်ခွဲခြားထားသည်)
ပုံမှန်လည်ပတ်မှု - သော့ချက်ကျသောအလှည့်ကျသည့်မူဝါဒများ (ဥပမာ 90 တိုင်း) ကိုတီထွင်ပါ။
စာရင်းစစ် - တောင်းဆိုမှု, အရင်းအမြစ် IP နှင့်ပျက်ကွက်သောလက်မှတ်များအတွက်အချိန်မအောင်မြင်သောလက်မှတ်များအတွက်အချိန်ယူရမည့်အချိန်ကိုမှတ်တမ်းတင်ပါ။
HTTPS / TLS ကိုအသုံးပြုခြင်း - လက်မှတ်များနှင့်ဖိုင်များကို tls မှတဆင့်ငွေချေးစာချုပ်များနှင့်သော့ချက်များကိုခိုးယူခြင်းသို့မဟုတ်ခိုးယူခြင်းများကိုရှောင်ရှားရန် TLS မှတဆင့်လွှဲပြောင်းရမည်။
မသုံးပါနှင့် == , == သို့မဟုတ် string ကိုနှိုင်းယှဉ်ဖို့ string splicing; သင်ခန်းစာနှင့်နှိုင်းယှဉ်လျှင်သင် hash_equals () ကို အသုံးပြုသင့်သည်။
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">hash_equals</span></span><span>(</span><span><span class="hljs-variable">$serverSig</span></span><span>, </span><span><span class="hljs-variable">$clientSig</span></span><span>)) {
</span><span><span class="hljs-comment">// ြငင်းပယ်</span></span><span>
}
</span></span>
Hash_equals () ကွဲပြားခြားနားသောအရှည်သို့မဟုတ်အစောပိုင်းမတိုက်ဆိုင်သည့်အခါခေါင်းပုံဖြတ်အမြတ်ထုတ်ခြင်းမှအချိန်ကွာခြားချက်ကိုတားဆီးနိုင်ပါတယ်။
HMAC စိစစ်အတည်ပြုခြင်းသည်သမာဓိရှိမှုနှင့်စစ်မှန်ကြောင်းအတည်ပြုခြင်း၏အစိတ်အပိုင်းတစ်ခုသာဖြစ်ပြီး,
file type (MIME Type + File Header Signer Signature Signature) ကို Verify လုပ်ပါ ။
အရွယ်အစားကိုကန့်သတ်ခြင်း , upload ကြိမ်နှုန်းကိုကန့်သတ်ခြင်း,
အသုံးပြုသူတင်ပါးပုံစံကို web root directory မှသီးခြားခွဲထားပါ။ သင့်တော်သောဖိုင်ခွင့်ပြုချက်ကိုသတ်မှတ်ပါ (executable မဟုတ်ပါ) ။
executable files များ (ဗိုင်းရပ်စ်စကင်ဖတ်စစ်ဆေးမှုဗိုင်းရပ်စ်ပိုး / Sandbox analysis) ဖြင့်ဖျော်ဖြေတင်ဆက်သည်။
အချို့သောဗိသုကာများသည် 0 န်ဆောင်မှုခံယူသူအား 0 န်ဆောင်မှုခံယူသူအား "Proferfuled URL" သို့မဟုတ်လက်ခဏာသက်သေပြရန်ဆာဗာကို 0 န်ဆောင်မှုခံယူခွင့်ပြုရန်အတွက်ဆာဗာကို 0 န်ဆောင်မှုခံယူရန်လိုသည်။ ဒီဇာတ်လမ်းထဲမှာ:
ဆာဗာသည်ကြိုတင်နဂိုပြုပစ်မတိုင်မီ URL ကိုထုတ်ပေးသောအခါ၎င်းသည် HMAC ကိုထည့်သွင်းပါ (သို့မဟုတ် cloud store self store signession signession ကို အသုံးပြု. ) အနာဂတ်တွင်တင်သောအခါတိုင်းတိကျသော header ( X-Heavory-sha256 ကဲ့သို့သော header) ကိုယူဆောင်လာရန်လိုအပ်ကြောင်းကိုအကြောင်းကြားနိုင်သည်။
ဖိုင်တစ်ခုအား Cloud သိုလှောင်မှုသို့တင်ပို့သောအခါဆာဗာသည် HMAC သို့မဟုတ်နောက်ဆက်တွဲဖိုင်များအတွက် HMAC ကိုပြန်လည်ရယူခြင်း (ဥပမာ - HMAC ကိုပြန်လည်ရယူခြင်း, အသေးစိတ်အချက်အလက်များသည် cloud သိုလှောင်မှု၏လုပ်ဆောင်နိုင်စွမ်းအပေါ်မူတည်သည်။
Q: HTTPS ရှိလျှင် HMAC ကိုအဘယ်ကြောင့်လိုအပ်သနည်း။
HTTPS မှဂီယာလုံခြုံရေးကိုကာကွယ်ရန်သို့မဟုတ်တရား 0 င်ကိုင်ဆောင်သူများကိုအန္တရာယ်ရှိသောဖိုင်များကိုတင်ခြင်းမှကာကွယ်ခြင်းသို့မဟုတ်ဆာဗာဘက်တွင်ပြန်လည်တင်ပို့ခြင်းမှကာကွယ်ခြင်းမတားဆီးနိုင်ပါ။ HMAC က "သော့နှင့်အတူပါတီသည်ဤအပ်လုဒ်တွင်လက်မှတ်ကိုထုတ်ပေးသည်။
Q: Hash_File () (သော့မရှိ) ကိုငါသုံးလို့ရမလား။
Hash_File () သည် သမာဓိကိုသာအတည်ပြုနိုင်သည် (၎င်းနှင့်အတူအနှောင့်အယှက်ဖြစ်စေခြင်းရှိမရှိ) သို့သော်မည်သူမဆို hash တန်ဖိုးကိုကိုးကွယ်နိုင်သည်။ သင် hash value ကိုဖော်ထုတ်လိုခြင်းနှင့်ဆာဗာတစ်ခုတည်းသာလျှင်တွက်ချက်ခြင်းနှင့်နှိုင်းယှဉ်ခြင်းအတွက်သာတာဝန်ရှိသည်ဆိုလျှင် Hash_File () သည်လည်းအသုံးဝင်သည်။ အကယ်. သင်သည် upload အစပျိုးမှုကိုစစ်ဆေးလိုပါက HMAC ကိုသုံးသင့်သည်။
ဆာဗာပေါ်ရှိဖိုင် HMAC ဖိုင်ကိုထိရောက်စွာတွက်ချက်ရန် hash_hmac_file () (သို့မဟုတ် hash_init + hash_update ) ကိုသုံးပါ။ 0 န်ဆောင်မှုခံယူသူသည်တူညီသောသော့ချက်နှင့်လက်မှတ်ထိုးပြီးလက်မှတ်ကိုပို့သည် (သို့မဟုတ်လက်မှတ်ထိုးထားသောအထောက်အထားများကိုဆာဗာမှထုတ်ပေးသည်)
Timing-Safe နှိုင်းယှဉ်မှုများအတွက် hash_equals () ကို သုံးပါ။
လုံခြုံစိတ်ချရသောသိုလှောင်မှုနှင့်လည်ပတ်မှုဆိုင်ရာမူဝါဒများအသုံးပြုသော https များဖြင့်လက်မှတ်များနှင့်ဖိုင်များကိုအမြဲတမ်းလွှဲပြောင်းပါ။
ကြီးမားသောဖိုင် / အချပ်တင်ခြင်းများအတွက် streaming hmac သို့မဟုတ် shard လက်မှတ်ရေးအစီအစဉ်များကိုအသုံးပြုပါ။
HMAC ကို tamper-promection source screenification ၏တစ်စိတ်တစ်ပိုင်းအနေဖြင့် အသုံးပြု. ဖိုင်အမျိုးအစားရှာဖွေတွေ့ရှိမှု, ခွင့်ပြုချက်ထိန်းချုပ်မှုနှင့်ဗိုင်းရပ်စ်ကိုစကင်ဖတ်စစ်ဆေးသည်။