امنیت برنامه در برابر اسپمر ها
سلام
یکی دیگه از موارد مهمی تا الان بهش فکر نکرده بودم ، امنیت سرور در مقابل اسپمر ها بود !
در برنامه ، ما آدرس سرور را در " " قرار میدیم ، هر چیزکه اینطور وارد بشه ، مبهم نمیشه ، پس در نتیجه ، اگر کسی برنامه رو Decompile کنه ، آدرس سرور را داره ! خوب مثلا
site.com /service.php?Type=read
دوباره مقدار هایی که بصورت nameValuePair میفرستیم ها از جنس رشته هستند و میشه فهمید مثلا name , lastname , age هست
خوب حالا خیلی راحت میشه برای Down کردن سرور تلاش کرد و داده های اسپم در سرور وارد کرد ! :(
یکی از راه حل ها برای این کار SignKey هست ، مثلا اگه مقداری که فرستاده شده ، 1010 بود ، کار را در php انجام بدیدم ، ولی بازم ، signkey در برنامه قابل کشف هست :(
- راه حلی که من دنبالشم ، مقداری هست که بعد دیکامپایل ، مشخص نباشه ، چی بوده !
یا اگه شما ایده ی دیگه ای دارید بفرمائید :)
توی پرداخت درون برنامه ای بازار، بازار پیشنهاد میده که از کلید عمومی در برنامه محافظت کنید.(تا میتونید مخفی اش کنید، کدگذاری اش کنید، زمان اجرا بسازیدش)
همون طور که می دونید کلید عمومی یک رشته هست مثل همین آدرس سرور در برنامه ی شما.
البته کلید عمومی برنامه چیزی نیست که هکرها با فهمیدنش، از این کلید در برنامه هایشان استفاده کنند(سو استفاده کنند)، بلکه اگه هکرها بتونن بفهمن که کلید عمومی را کجای برنامه تان قرار داده اید می تونن کلید عمومی یکی از برنامه هایشان که از پرداخت درون برنامه ای بازار استفاده میکنه رو به جای کلید عمومی برنامه ی شما در برنامه ی شما جایگزین کنن (نام پکیج برنامه را هم باید تغییر بدن و sku رو هم باید تغییر بدن) و برنامه تغییر داده ی شما را در اینترنت منتشر کنن تا پول به حساب برنامه ی خودشون بره.(توی بازار نمیتونن منتشر کنن چون ضایع میشن :دی )
بازار این پیشنهادات رو به توسعه دهندگان برای محافظت از کلید عمومی که یک رشته هست رو میده :
از کلید عمومی بازار محافظت کنید
برای محافظت کلید عمومی از کاربران مخرب یا هکرها، سعی کنید آن را به صورت رشتهٔ ثابت درون کد قرار ندهید. در عوض، رشته را در زمان اجرا بسازید یا از جابجایی بیتها (مانند XOR با چند رشتهٔ دیگر) برای پنهان کردن کلید اصلی استفاده کنید. کلید خودش اطلاعات محرمانه نیست، اما شما نمیخواهید کار را برای هکرها برای جایگزینی کلید عمومی با کلیدی دیگر آسان کنید.
کدهایتان را obfuscate کنید
شما باید کد پرداخت درون برنامهای خود را مبهم و به هم ریخته کنید تا کار را برای مهاجمینی که میخواهند از طریق مهندسی معکوس پروتکلهای امنیتی، به محتوا و سایر اجزای برنامهتان دسترسی پیدا کنند، سخت کنید. حداقل، ما به شما استفاده از ابزار ابهامی مثل Proguard بر روی کد را پیشنهاد میدهیم.
به علاوه، برای مبهمسازی کد پرداخت درون برنامه ای به شما تکنیکهای زیر را پیشنهاد میدهیم:
- رشتهها را در زمان اجرا بسازید.
- از Java Reflection برای فراخوانی متدها استفاده کنید.
استفاده از این تکنیکها تعداد مهاجمین به برنامهٔ شما را کاهش میدهد و به تبع باعث افزایش امنیت پیادهسازی پرداخت درون برنامهای میشود.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .