نسخه چاپی
امنیت
ما و توسعهدهنگان متعهد به حفظ امنیت، حریم شخصی و ارائه محیطی امن برای کاربران هستیم. ایجاد فضای امن برای کاربران همواره از دغدغههای اصلی بازار بوده است. کاربران میخواهند با اطمینان خاطر به دانلود برنامهها از بازار بپردازند، بنابراین ما به برنامههایی که امنیت اطلاعات کاربران را به خطر اندازد یا برنامههای مخرب که از اطلاعات شخصی یا دستگاه کاربر سو استفاده میکنند، اجازه انتشار نمیدهیم.
اطلاعات و دادههای کاربران
حفظ امنیت کاربران برای بازار اهمیت فراوان دارد. توسعهدهندگان باید در نحوه مدیریت اطلاعات کاربران شفافیت لازم را داشته باشید. هدف ما از ایجاد محدودیت، ایجاد امنیت برای کاربران است. به همین دلیل اگر برنامه کارکرد پیچیدهای داشته باشد؛ از کاربر دسترسیهای نالازم بخواهد؛ یا به اطلاعات حساسی از کاربر دسترسی داشته باشد، از سوی بازار برای انتشار پذیرفته نخواهد شد. دادههای کاربران ممکن است شامل اطلاعات شناسایی شخصی، اطلاعات مالی و پرداخت، اطلاعات احراز هویت، دفترچه تلفن، مخاطبین، موقعیت دستگاه، پیامک و دادههای مربوط به تماس، میکروفون، دوربین و … باشد.
مواردی که شما باید در دریافت اطلاعات و دادههای کاربران در نظر بگیرید:
- کتابخانهها و"SDK": کتابخانهها و "SDK" مورد استفاده شده در برنامهتان، صرف نظر از اینکه دادهها به سرور شخص ثالث یا سرور برنامه شما منتقل میشوند، بخشی از برنامه شما هستند و این دادهها از برنامه شما منتقل میشوند. بنابراین لازم است دقت لازم را برای استفاده از کتابخانهها و "SDK" مختلف را داشته باشید و همیشه حفظ امنیت دادههای کاربران خود را در اولویت قرار دهید.
- "Webview": ممکن است برنامه شما سایت دیگری را که وابسته به برنامه نیست به صورت "Webview" باز کند. در این شرایط علاوه بر رعایت حقوق مالکیت فکری باید در نظر بگیرید که سایت مورد نظر ممکن است دادههای شخصی افراد را دریافت کند. برای ایجاد امنیت برای اطلاعات کاربران در این بخش لازم است آن سایت را یا به مرورگر و خارج از برنامه انتقال دهید یا از سایت مورد نظر اجازه استفاده به صورت "Webview" را داشته باشید.
در ادامه انواع مختلف دادههای کاربران که ممکن است برنامه شما این داده را دریافت کند، آورده شده است. در نظر داشته باشید شما به عنوان توسعهدهنده برنامه ملزم به حفظ دادههایی که از کاربران دریافت میکنید، هستید.
امنیت
موقعیت کاربر | موقعیت تقریبی | موقعیت مکانی دستگاه و کاربر در منطقهای بزرگتر یا مساوی ۳ کیلومتر مربع، مانند شهری که کاربر در آن است. | ||
موقعیت دقیق | موقعیت دقیق دستگاه و کاربر در منطقهای کوچکتر از ۳ کیلومتر مربع | |||
اطلاعات شخصی | نام | نام، نام خانوادگی و نام مستعاری که کاربر در برنامه برای معرفی خود استفاده میکنند. | ||
ایمیل | آدرس ایمیل کاربر | |||
شناسههای کاربردی | شناسههای مانند کدملی، شماره شناسنامه، شماره حساب و… | |||
آدرس | آدرس کاربر، مانند آدرس پستی خانه یا محل کار | |||
تلفن همراه | شماره تلفن همراه کاربر | |||
سایر اطلاعات | هر گونه اطلاعات شخصی دیگر مانند تاریخ تولد و غیره. | |||
اطلاعات مالی | اطلاعات پرداخت کاربر | اطلاعات مربوط به حسابهای مالی کاربر مانند شماره کارت بانکی | ||
سابقه خرید | اطلاعات مربوط به خریدها یا تراکنشهایی که کاربر انجام داده است. | |||
سایر اطلاعات مالی | هر گونه اطلاعات مالی دیگر مانند حقوق و دستمزد کاربر یا بدهی | |||
سلامتی و تندرستی | اطلاعات سلامتی | اطلاعات مربوط به سلامتی کاربر، مانند سوابق پزشکی یا علائم بیماری | ||
اطلاعات تناسب اندام | اطلاعات مربوط به تناسب اندام کاربر، مانند ورزش یا سایر فعالیتهای بدنی | |||
پیامها | ایمیلها | ایمیلهای کاربر شامل موضوع ایمیل، فرستنده، گیرندگان و محتوای ایمیل | ||
SMS | پیامهای متنی کاربر شامل فرستنده، گیرندگان و محتوای پیام | |||
سایر پیامهای درون برنامهای | هر نوع پیام دیگری به عنوان مثال، پیامهای فوری | |||
عکس یا فیلم | عکسها | عکسهای کاربر | ||
فیلمها | فیلمهای کاربر | |||
وبگردی | تاریخچه وبگردی | اطلاعاتی در مورد وب سایتهایی که کاربر بازدید کرده است. | ||
مخاطبین | مخاطبین | اطلاعات مربوط به مخاطبین کاربر مانند نام مخاطبین، تاریخچه پیام و... | ||
فایلهای صوتی | ضبط صدا | صدای کاربر مانند پست صوتی یا ضبط صدا | ||
فایلهای موسیقی | هر فایل صوتی دیگری که توسط کاربر ایجاد شده | |||
سایر فایلهای صوتی | هر فایل صوتی دیگری که توسط کاربر ایجاد شده | |||
فایلها و اسناد | فایلها و اسناد | فایلها یا اسناد کاربر یا اطلاعات مربوط به آنها | ||
فعالیت برنامه | تعاملات برنامه | اطلاعاتی در مورد نحوه تعامل کاربر با برنامه، به عنوان مثال تعداد دفعاتی که از یک صفحه بازدید میشود. | ||
تاریخچه جستجوی درون برنامه | اطلاعاتی درباره آنچه کاربر در برنامه شما جستجو کرده است | |||
برنامههای نصب شده | اطلاعات مربوط به برنامههای نصب شده روی دستگاه کاربر | |||
سایر محتوای تولید شده توسط کاربر | هر محتوای دیگری که توسط کاربر ایجاد شده است که در اینجا یا در هر بخش دیگری فهرست نشده است. به عنوان مثال یادداشتهای کاربر | |||
سایر اقدامات | سایر فعالیتها یا اقدامات کاربر در برنامه که در اینجا فهرست نشدهاند، مانند لایکها | |||
اطلاعات برنامه و عملکرد | "Diagnostics" | اطلاعاتی در مورد عملکرد برنامه شما. به عنوان مثال عمر باتری، نرخ فریم یا هر نوع تشخیص فنی | ||
سایر دادههای عملکرد برنامه | سایر اطلاعات عملکرد برنامه که در اینجا فهرست نشده است. | |||
شناسههای دستگاه | شناسههای دستگاه | شناسههایی که به یک دستگاه، مرورگر یا برنامه اختصاصی مربوط میشوند. به عنوان مثال، یک شماره "IMEI"، آدرس "MAC"، شناسه دستگاه، شناسه نصب "Firebase" یا شناسه تبلیغاتی | ||
API و دسترسیهای استفاده شده در برنامه
دسترسیها و API که در برنامه استفاده شده است و به اطلاعات حساس کاربر دسترسی دارند باید کاربرد آنها برای کاربران منطقی و شفاف باشد. بنابراین توسعهدهندگان فقط میتوانند از دسترسیها و API استفاده کنند که برنامه برای اجرای ویژگی یا خدمات فعلی ارائه شده، به آنها نیاز داشته و برای کارکرد برنامه ضروری باشند.
در اندک مواردی ممکن است استثناهایی وجود داشته باشد. در شرایطی که دسترسی به کار رفته مربوط به کارکرد اصلی برنامه نباشد ولی با رعایت تمامی قوانین، توسعهدهنده توضیح شفاف و قانعکنندهای در مورد لزوم استفادهی صحیح از دسترسی مورد نظر و عدم وجود راهکار جایگزین ارائه دهد، امکان انتشار برنامه ممکن است فراهم شود. توجه داشته باشید این اتفاق بسیار نادر است و امکان استفاده از دسترسیهای غیرضروری در برنامه وجود ندارد.
برنامهها فقط میتوانند از دسترسیها (و هر دادهای که از دسترسیها به دست میآید) برای ارائه عملکرد اصلی برنامه استفاده کنند. عملکرد اصلی به عنوان هدف اصلی برنامه تعریف میشود و بدون ویژگیها و هدفهای اصلی، برنامه غیرقابل استفاده می شود. انتقال، اشتراکگذاری یا استفاده مجاز از این دادهها فقط باید برای ارائه ویژگیها یا خدمات اصلی در برنامه باشد و استفاده از آن برای هیچ هدف دیگری (به عنوان مثال، بهبود سایر برنامهها، تبلیغات یا اهداف بازاریابی) قابل قبول نیست.
دسترسیهای مورد نیاز برنامه را تا حد ممکن به صورت (Runtime) از کاربران درخواست کنید و دلیل نیاز به دسترسی باید برای کاربر منطقی و شفاف کنید. لازم است توسعهدهنده به رد درخواست دسترسی از سوی کاربران احترام بگذارد و کاربران نباید برای تایید درخواست دسترسی تحت فشار گذاشته شوند بلکه لازم است توسعهدهندگان تلاش کنند تا راهکار جایگزینی را در این موارد به کاربران ارائه کنند. برای مثال اگر کاربری اجازه دسترسی به لیست مخاطبین را به برنامه نمیدهد، توسعهدهنده میتواند امکان وارد کردن شماره تلفن را برای کاربران فراهم کند. |
در ادامه به بررسی مواردی از دسترسیهای خطرناک میپردازیم و کاربرد آنها را در برنامه شفاف میکنیم.
دسترسی "SMS" و " Call Log"
دسترسی | الزامات |
Call Log permission group ( READ_CALL_LOG, WRITE_CALL_LOG, PROCESS_OUTGOING_CALLS) | باید بهطور فعال به عنوان کنترل کننده تلفن یا دستیار پیش فرض تماس در دستگاه ثبت شود. |
SMS permission group (READ_SMS, SEND_SMS, WRITE_SMS, RECEIVE_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMS) | باید بهطور فعال به عنوان کنترل کننده پیامک یا دستیار پیشفرض سیستم ارسال پیامک در دستگاه ثبت شود. |
برنامههایی که دارای قابلیت مدیریت پیامک، تلفن یا دستیار پیشفرض هستند، میتوانند از دسترسیهای بالا استفاده کنند. در نظر داشته باشید برنامهها در زمانی که دیگر کنترلکننده پیشفرض تماس، پیامک و … نیستند، باید استفاده از مجوز یا دسترسی را متوقف کنند.
دسترسی "Location"
دسترسیها | الزامات |
location permissions (ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION, ACCESS_BACKGROUND_LOCATION) | برنامههایی که برای عملکرد برنامه خود نیاز به استفاده از موقعیت دستگاه کاربر را دارند. |
توسعهدهندگان هرگز نباید دسترسیهای موقعیت مکانی را از کاربران تنها با هدف تبلیغات یا تجزیه و تحلیل درخواست کنید. برنامههایی که استفاده از این دسترسیها را برای ارائه تبلیغات گسترش میدهند، باید با خطمشی تبلیغات ما مطابقت داشته باشند. برنامهها باید حداقل دامنه و دقت لازم برای ارائه ویژگی یا سرویس فعلی در برنامه را که نیاز به دسترسی موقعیت کاربر را دارند، درخواست کنند و کاربران باید به طور منطقی در جریان سطح دسترسی درخواستی (موقعیت تقریبی، موقعیت دقیق) باشند.
دسترسی پسزمینه موقعیت مکانی (ACCESS_BACKGROUND_LOCATION) باید فقط برای ارائه ویژگی مفید به کاربر و مرتبط با عملکرد برنامه استفاده شود.
در مورد دقت دسترسیهای موقعیت مکانی دقیق و تقریبی، سیستمعامل اندروید از دقتهای زیر پشتیبانی میکند.
- تقریبی (Approximate): دسترسی موقعیت مکانی تقریبی موقعیت دستگاه را در حدود ۳ کیلومتر مربع تشخیص میدهد. برای این سطح از دقت میتوانید از دسترسی ACCESS_COARSE_LOCATION استفاده کنید.
- دقیق (Precise): موقعیت مکانی دقیق موقعیت دستگاه را در حدود ۵۰ متر و گاهی اوقات در حد ۱۰ متر یا بهتر تشخیص میدهد. برای این سطح از دقت میتوانید از دسترسی ACCESS_FINE_LOCATION استفاده کنید.
برای اطلاعات بیشتر در مورد دسترسیهای حساس و غیرمجاز میتوانید به «راهنمای دسترسیها» مراجعه کنید.
استفاده از Intent
اقدامات حساسی که نیازمند وجود ایمنی و شفافیت در برنامه هستند یا برای کاربر هزینههایی مانند ارسال پیامک یا برقراری تماس تلفنی ایجاد میکنند باید تا جای ممکن با استفاده از Intent انجام شوند.
برنامههای اندرویدی میتوانند اقدامات بسیاری را با استفاده از Intent انجام دهند که در اینصورت، نیازی به دسترسیهای مربوط به انجام آن نیست. در صورت استفاده از Intent اقدام مربوطه برای کاربر مشخص و نیازمند تأیید وی است. به عنوان مثال چنانچه پیامکی با Intent ارسال شود، برنامه نیازی به دسترسی «ارسال پیامک» ندارد و متن پیامک ارسالی و گیرنده، به کاربر نمایش داده میشود و کاربر میتواند آن را رد یا ارسال نماید. همچنین امکان پیادهسازی فرآیند تماس، بدون نیاز به دریافت دسترسی تماس از سوی کاربر نیز امکانپذیر است. پیشنهاد میشود به این منظور از راههای جایگزین استفاده کنید.
حفظ امنیت کاربران
حفظ امنیت کاربران و ارائه محیط امن به آنها همیشه از دغدغههای اصلی بازار بوده است. با ایمنتر کردن برنامه خود، به حفظ اعتماد کاربر نیز میتوانید کمک کنید. به طور کلی، بهترین رویکرد برای امنیت دادههای کاربر، به حداقل رساندن استفاده از API و دسترسیهایی است که به دادههای حساس یا شخصی کاربر دسترسی دارند.
در راستای حفظ امنیت کاربران لازم است در پیادهسازی برنامه خود موارد زیر را در نظر بگیرید:
- پرداخت اینترنتی برنامههای از طریق درگاههای امن مورد تایید بانک مرکزی، باید خارج از محیط برنامه و در مرورگر انجام شود.
- برنامهها نباید در محتوای خود به سایر فروشگاهها و سایتهای توزیع برنامه یا بازی اشاره کنند یا امکان دسترسی به برنامهها را از منابعی به غیر از بازار فراهم کنند.
- توسعهدهندگان باید آخرین نسخه برنامه خود را در بازار قرار دهد.
- برنامههایی که از بازار دانلود میشوند تنها باید از طریق بازار بهروزرسانی شوند. جایگزینی، تغییر و بهروزرسانی برنامه از روشهای دیگر مجاز نیست.
- چنانچه استفاده از برنامه نیازمند دسترسی به اطلاعات خاصی از کاربر نبوده یا ثبتنام او جزء ویژگیهای اصلی برنامه نیست، توسعهدهنده باید امکان استفاده از برنامه بدون نیاز به ورود اطلاعات مذکور یا ثبتنام را فراهم نماید. درخواست اطلاعات شخصی از کاربر مگر در مواردی که مستقیما مربوط به کارکرد برنامه باشد، مجاز نیست.
- اگر برنامه توسط "Webview" به دادههای حساس دسترسی پیدا میکند، بهترین روش برای در امن نگه داشتن این دادهها، پاک کردن فایلهای ذخیره شده محلی (Local) است. برای پاک کردن فایلهای ذخیره شده محلی میتوانید از "()clearCache" استفاده کنید. همچنین میتوانید از "header"سمت سرور مانند"no-cache" استفاده کنید تا برنامه شما نتواند محتوای مربوط به بخش "webview" را در حافظه پنهان ذخیره کند.
- پیشنهاد میشود برای امنیت بیشتر کاربران به جای استفاده از دسترسی (android.permission.RECEIVE_SMS) برای دریافت پیامک فعالسازی (OTP) از روش جایگزین (Google SMS Retriever API) جهت درج خودکار پیامک فعالسازی استفاده کنید.
به مطالب ارائه شده چه امتیازی میدهید؟
محل نوشتن دیدگاه ...
اگر در مورد محتوا نظر یا پیشنهادی دارید لطفا برای ما بنویسید.
زمان انتشار: ۱۴۰۰-۰۲-۲۸ ۱۷:۵۱
آخرین بهروزرسانی: ۱۴۰۰-۱۲-۲۲ ۱۲:۲۰