په Android کې د روښانه متن بلاکول د دوو بشپړو بېلو شیانو لپاره ویل کیږي. یو د اپلیکیشن دننه پالیسي ده چې خپل شبکه یي سټیک ته د ساده HTTP د ردولو امر کوي. بل د وسیلې کچې ترتیبات دي چې هڅه کوي په ټیلیفون کې هر څه یو ځای وژغوري، معمولاً د ټرافیک د VPN له لارې تېرولو سره. دوی بېلې ستونزې حل کوي، او دویم نشي کولی لومړی سم کړي: تونل د ټیلیفون او وتلو ترمنځ برخه ساتي، خو هغه اپلیکیشن چې HTTP وایي لا هم له هغو ټولو سره چې د وتلو هاخوا دي HTTP وایي.

د یو نوم لاندې دوه ستونزې

لومړۍ ستونزه پېلوډ دی: اپلیکیشن د پېژندنې معلومات یا ټوکنونه په داسې غوښتنه کې لیکي چې له سره تر سره کوډ نه دي، نو هر هغه پړاو چې دا ویني کولی شي یې ولولي. دویمه لاره ده: اپلیکیشن ممکن بشپړ سم وي، او تاسو بیا هم غواړئ چې ځایي Wi-Fi آپریټر په دې اړه هیڅ ونه پوهیږي چې دا چېرته نښلول کیږي. VPN دویمې ته رسیده ګي کوي او یوازې دویمې ته.

همدا توپیر د سمون څښتن ټاکي. پېلوډ د هغه چا دی چې اپلیکیشن وړاندې کوي، ځکه یوازې همغه کوډ ټاکي چې کوم URL بلل کیږي او آیا سند تصدیق کیږي. لاره د وسیلې یا شبکې ده، ځکه پوښتنه دا ده چې کڅوړې چېرته ځي، نه دا چې څه لري.

لومړۍ لاره: هغه اپلیکیشن چې تاسو یې کنټرول کوئ

که تاسو اپلیکیشن وړاندې کوئ، سمون یو ټرانسپورټ پرېکړه او هغه پالیسي ده چې پلي یې کوي. هر پای ټکی HTTPS ته وګرځوئ، د کوربه نوم او سند تصدیق چالان وساتئ، او ساده HTTP ته د بیرته تګ لار په یو کنفیګریشن بیرغ کې پرېښودلو پرځای حذف کړئ. بیا لارښوونه دلته مرسته نه کوي: هغه HTTP غوښتنه چې 301 ترلاسه کوي خپل سرلیکونه او بدن مخکې له مخکې په روښانه توګه لېږلي دي، نو پېژندنې معلومات باید هېڅکله د دې انګیرنې سره سفر ونه کړي چې بیا لارښوونه به یې وساتي.

په Android 7.0 او وروسته کې Network Security Configuration پالیسي بیانوي. لاندې فایل ترټولو کوچنی ګټور بڼه ده: دا هر چیرې روښانه متن ردوي پرته له دې چې د ډومین ځانګړې استثنا بل څه ووایي.

<network-security-config>
    <base-config cleartextTrafficPermitted="false" />
</network-security-config>

له مانیفست څخه هغه سرچینې ته اشاره وکړئ، بیا د وړاندې کولو مخکې هغه استثناوې ولولئ چې مخکې له مخکې شته. زوړ ډیبګ ډومین یا د تادیې وړاندې کوونکي SDK ننوتنه کولی شي په خاموشۍ سره هغه کوربه ته چې تاسو یې د ساتلو هڅه کوله بیا روښانه متن اجازه کړي.

د نسخې دوه تفصیلات د پوهېدو وړ دي. هغه اپلیکیشنونه چې API 28 یا نوي ته نښه کوي مخکې له مخکې په ډیفالټ ډول روښانه متن ردوي، نو هغه اپلیکیشن چې لا هم ساده HTTP وایي یا زوړ API کچه نښه کوي یا چېرته استثنا لري. او کله چې د شبکې امنیت کنفیګ شتون ولري، زوړ android:usesCleartextTraffic مانیفست ځانګړتیا نوره دا پوښتنه نه ټاکي، ځکه چې د هغه بیرغ بدلول کله ناکله داسې ښکاري چې هېڅ نه کوي.

دویمه لاره: هغه اپلیکیشن چې تاسو یې کنټرول نه کوئ

د نصب شوي دریم اړخ اپلیکیشن لپاره تاسو نشئ کولی د کاروونکي تنظیم له لارې د هغه امنیتي کنفیګریشن بیا ولیکئ. واقعي انتخابونه د محصول خپل د خوندي نښلولو کنټرولونه، یو ساتل شوی بدیل چې مخکې له مخکې TLS کاروي، یا د مدیریت شوې وسیلې پالیسي ده چې محدودوي چې وسیله څه چلولی شي. دا بېلې ژمنې دي، او یوازې دریمه یې وسیلو ډلې ته غځیږي.

د شبکې قواعد د ښکارېدو په پرتله کمزوري بدیلونه دي. یوازې د 443 پورټ اجازه تصدیق شوی TLS نه پلي کوي، ځکه ډېری روښانه متن پروتوکولونه کولی شي دې پورټ ته ولېږدول شي، او د 80 پورټ بلاکول په نورو پورټونو کې روښانه متن نه پوښي. د براوزر یوازې-HTTPS حالت هم همغه براوزر ته محدود دی، په همغه ټیلیفون کې بېل بریښنالیک یا چیټ اپلیکیشن ته نه.

د ټرافیک د کوډ شوي ښکارېدو لپاره د مداخلې سند نصبول د باور بدلون دی، سمون نه. دا د اپلیکیشن د سرور تصدیق ستاسو سره بدلوي، او هغه اپلیکیشن چې له پیل څخه سندونه تصدیق نه کړل دا کار سم نه کړي؛ تاسو یوازې دا لېږدولې چې څوک جریان لولی شي.

VPN چېرته مرسته کوي او چېرته نه

تونل هغه وخت سم اوزار دی چې اړتیا یې دا وي چې ځایي شبکه د نښلونې په اړه هېڅ ونه پوهیږي، یا اپلیکیشن یوې خصوصي خدمت ته ورسیده چې بل ډول نه شي رسیده ګي کولی. دا هغه وخت ناسم اوزار دی چې یو HTTP کلاینټ HTTPS ووایي، ځکه غوښتنه تونل هماغسې پریږدي لکه څنګه چې ننوتلې وه.

Android یو عملي محدودیت زیاتوي: پلیټفارم په یو وخت کې یوازې یوه VPN خدمت چلوي. هغه ځای نیولې ځایي فلټر کونکی اپلیکیشن له هغه لرې تونل سره سیالي کوي چې تاسو واقعاً ورته اړتیا لرئ، او د دوی ترمنځ بدلول د اپلیکیشن نه، د وسیلې کچې عمل دی. همغه یو ځای ښه دلیل دی چې د پېلوډ پالیسي په اپلیکیشن کې وساتئ او تونل د لارې لپاره وساتئ.

یوازینی حالت چې دواړه سره نښلي هغه خصوصي سرور دی چې تاسو یې هم چلوئ. هلته تونل کولی شي لاره خصوصي کړي که څه هم پروتوکول لا هم روښانه متن دی، چې افشا کموي خو دا نه بدلوي چې پېلوډ څه دی. دې ته د خطر د کمولو په سترګه وګورئ، نه د معلوماتو د کوډ کولو.

د بلاک نومولو دمخه څه ازموئ

له هغه ډیفالټ څخه پیل وکړئ چې خلک حیرانوي: هغه اپلیکیشن چې API 28 یا نوي ته نښه کوي باید مخکې له مخکې روښانه متن رد کړی وی، نو د ډیفالټ د کاپي کولو کنفیګریشن اضافه کولو دمخه هدف کچه وګورئ. بیا د ناکامۍ حالت په قصد سره ازموئ: ساده HTTP کوربه ته غوښتنه باید ناکامه شي نه دا چې په خاموشۍ سره د بیرته تګ له لارې بریالۍ شي.

adb shell dumpsys package com.example.app | grep -E 'targetSdk|versionName'
adb logcat | grep -i cleartext

د بریا حالت لپاره تایید کړئ چې HTTPS غوښتنه ریښتینی سند لړۍ تصدیقوي او د ناامین سند لرونکی پراکسي د زغملو پرځای رد کیږي. هغه لاس ورکول چې له هر سند سره بریالي کیږي د ټرانسپورټ امنیت په اړه هېڅ ثابت نه کړل.

د دریم اړخ اپلیکیشن لپاره هغه حد ولیکئ چې تاسو واقعاً پلي کولی شئ، که هغه د مدیریت شوې وسیلې پالیسي وي، د شبکې قاعده وي یا هېڅ نه وي، او په منلو معیارونو کې یې ووایاست. د Android امنیتي کنفیګریشن لارښود د پلیټفارم ډیفالټونه او دا چې کومې برخې پالیسي درناوی کوي لیست کوي، او همغه برخه ټاکي چې ستاسو کنفیګریشن په بشپړ ډول څه کوي که نه.

اړوندې مقالې