توضیحات
عنوان فارسی: مبحث کدینگ جاوا
- درستی رمز یا برگشت خروجی
- ممانعت از تزریق کد
- ممانعت از تزریق xpath
- ممانعت از تزریق LDAP
- ممانعت از آپلود اختیاری فایل ها
- از متد clone() برای کپی کردن پارامترهای غیر قابل اعتماد استفاده نکنید.
- از متد object.equals() برای مقایسه کلیدهای پنهانی استفاده نکنید.
- محدود کردن عمر داده های حساس
- 0از الگوریت های ضعیف یا نامطمعن استفاده نکنید.
- ذخیره کردن رمز با استفاده از تابع hash
- مطمعن شوید که secure random به درستی تولید می شود.
- ارائه کلاس های تغییرپذیر حساس با WRAPER غیرقابل تغییر
- در روش هایی که کد های غیر قابل اطمینان باطل تولید می کنندتکیه نکنید.
- اجتناب از دادن امتیازات اضافی
- به حداقل رساندن کد ممتاز
- از متدها با امنیت بیشتر برای چک کردن کدهای نامطمعن استفاده نکنید.
- تعریف مجوزهای امنیتی خاص برای امنیت ریزدانه ها
- ساخت یک sandbox ایمن با استفاده از مدیریت امنیت
مبحث کدینگ جاوا
زبان برنامه نویسی جاوا و دیگر سیستمهای runtime با امنیت ذهنی طراحی شده اند .به عنوان مثال مدیریت مکان از برنامه نویس مخفی است و هر ارجاعی به مکان خالی با یک خطا به کاربر نمایش داده می شود یا دسترسی به یک آرایه یا رشته خارج از محدوده نیز باعث نمایش پیغام خطا می شود.جاوا یک زبان به شدت تایپی است و همه گونه تبدیل نوع ضمنی به خوبی در آن تعریف شده است.
ماشین مجازی جاوا (JVM) در تصدیق بایت کد ساخته شده است برای تصدیق اینکه بایت کد در حال اجرا مطابق با مشخصات زبان جاوا ™است . در JAVA SE تمام بررسی کننده ها در زبان هستند و نمی توانند با هم برخورد داشته باشند.
برنامه های کاربردی سازمانی جاوا مستعد ابتلا به حملات هستند زیرا آنها ورودی نامطمئن قبول می کنند و در تعامل با زیر سیستم های پیچیده هستند.حملات XSS و LDAP و.. امکان پذیر است هنگامی که اجزای حساس به این حملات در برنامه های کاربردی استفاده شوند.بهترین استراتژی در برابر این حملات استفاده از لیست سفید یا رمزگذاری یا برگشت خروجی قبل از استفاده آن در برنامه است.
مکانیسم بار کننده جاوا می تواند بین کلاسهای لود شده تمایز قایل باشد به گونه ای که کلاسهای سیستم امن را از کلایهای دیگری که امن نباشد می تواند تشخیص دهد.کلاس های از یک منبع خارجی بوسیله بار کننده کلاس علامت گذاری می شوند که این علامت گذاری به بقیه کلاسها اعلام می شود.
در این قسمت روش های امنیتی در این موارد را بحث خواهیم کرد:
برخورد با داده های حساس
ممانعت از حملات تزریق
ویژگیهای زبان که می تواند در قسمت امنیت مورد استفاده قرار گیرد
جزییات امنیتی ریز دانه های جاوا
برای امنیت کد نویسی در جاوا چندین روش اتخاذ شده است:
اطلاعات حساس و رمز گذاری نشده را در سمت کلاینت ذخیره نکنید.
در هنگام ساخت یک برنامه که از مدل کلاینت –سرور استفاده می کند ذخیره کردن ازلاعات حساس مانند اعتبار کاربر در سمت کلاینت ممکن است که باعث افشای غیر مجاز اطلاعات شود اگر کلاینت مورد هجوم قرار گیرد.
برای برنامه های تحت وب،برای کاهش مشکل فوق بهتر است که مشتری اطلاعات حساس خود را در قالب کوکی درون سرور ذخیره کند.هر بار که کلاینتی دوباره به سرور متصل می شود یک کوکی را تولید می کند که کلاینت را به سرور می شناساند سپس سرور اطلاعات حساس را تولید می کند.
کوکی ها اطلاعات حساس در برابر حمله xss را محافظت نمی کنند.حمله کننده کسی است که با استفاده از xss اطلاعات را از کوکی ها و یا مستقیما از اطلاعات ذخیره شده در سمت کلاینت بدست می آورد.برای جلوگیری از این حملات بهتر است سرور از سرویس انقضای زمان استفاده کند مثلا هر دقیقه یک بار.
راه حل قابل قبول در این قسمت ذخیره نام کاربری و یک رمز تصادفی در کوکی است یا می توان آن را در یک SESSION با استفاده از HTTPSESSION قرار داد.سرور می تواند بین نام کاربری و رشته تصادفی یک نگاشت ایجاد کند و هر زمان کاربر گزینه REMEMBER ME را انتخاب کند متد DOPOST() نام کاربری و رشته تصادفی را جفت می کند اگراین نگاشت معتبر بود کاربروارد صفحه خوشامدگویی میشود و گرنه صفحه ERROR برای وی نمایش داده خواهد شد.اگر نام کاربری و رشته تصادفی درست بود ولی یک کوکی معتبر یافت نشد باید اطلاعات احراز هویت را از کاربر مجددا دریافت کنیم.
درستی رمز یا برگشت خروجی
ورودی درست می تواند مانع ورور داده های غلط به سیستم مانند پایگاه داده شود.چندین سیستم برای خروجی مطمعن اطلاعات وجود دارند.HTML یکی از این نمونه سیستم ها است.زیر سیستم ها ممکن است به نظر آید که سیستم امن و مطمعنی است در حالیکه سیستمی امن نیست .برای همین بهتر است اطلاعات را قبل از ورود به سیستم نرمال سازی کنیم.تبدیل صحیح اطلاعات خروجی به صورت رمزبه نسبت اطلاعاتی که به نظر میرسد صحیح هستند امن تر است زیرا مانع از دور زدن اعتبار سنجی داده ها می شود.
راه حل در این قسمت می تواند این باشد که کلاس VALIDDATEOUTPUT() را در قسمت خروجی تعریف کنیم تا برای خروجی امن مانند لیست سفید یا .. سیستم صحت داده ها دوباره چک کند.البته چک کردن دوباره داده بستگی به این دارد که این خروجیها در کجا تعریف شده اند مثلا در html و یا css و .. که هریک نیز راههای چک کردن مخصوص به خود را دارند.
راه دیگر این است که از ابزاراتوماتیک the checker framework استفاده کنیم.
ممانعت از تزریق کد
تزیرق کد هنگامی اتفاق می افتد که یک ورودی نامطمعن به صورت پویا به یک کد ساخته شه تزریق می شود.یک منبع از آسیب پذیری های بالقوه استفاده از جاوا اسکریپت در جاوا می باشد. بسته javax.script شامل رابط و کلاس هایی است که موتور اسکریپت جاوا و یک فریم ورک برای استفاده از رابط و کلاسها در کد جاوا تعریف شده است. سوء استفاده از API javax.script اجازه می دهد یک مهاجم کد دلخواه را بر روی سیستم هدف اجرا کند.
راه حل در اینجا استفاده از ساخت sand box ایمن با استفاده از مدیریت امنیت است که این برنامه باید از اسکریپت ها در برابر دستورات اجرایی مانند درخواست فایل سیستم محلی محافظت کند.می توان از تابع با دو آرگومان doprivileged() برای برنامه هایی که باید با امتیازات بالا کار کنند استفاده کرد.
RestrictedAccessControlContex این تابع نیز مجوزها را برای رسیدن به یک حالت امن جدید تعریف می کند.
برای حل ین مشکل دو راه داریم :
- استفاده از لیست سفید که به محض ورود داده آن ها را نمال سازی می کند
- استفاده از sand box که در قسمت قبل توضیح داده شد.
توجه:
- برای دانلود فایل word و پاورپوینت از گزینه افزودن به سبد خرید بالا استفاده فرمایید.
- لینک دانلود فایل بلافاصله پس از خرید بصورت اتوماتیک برای شما ایمیل می گردد.
به منظور سفارش تحقیق مرتبط با رشته تخصصی خود بر روی کلید زیر کلیک نمایید.
سفارش تحقیق
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.