فا

‫ برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها- قوانين IDS15-J و IDS16-J

 شماره:IRCAR201503249

تاريخ:19/12/93
اولين موضوعي كه به طور كلي در برنامه نويسي امن (رجوع شود به مقاله اصول برنامه نويسي امن) و همچنين در برنامه نويسي امن با زبان جاوا مورد توجه قرار مي‌گيرد مربوط به اعتبار سنجي ورودي و پاكسازي داده‌ها است. در ادامه به دو قانون IDS15 و IDS16 پرداخته خواهد شد.
قانون IDS15-J –اطلاعات حساس نبايد خارج از محدوده مورد اعتماد انتشار يابد
اين قانون از تعدادي زيرقانون تشكيل شده است.
تعدادي از راهكارهايي كه نمونه‌اي از اين قانون هستند عبارتند از: «قانون ERR01-J:استثنائات نبايد اطلاعات حساس را نمايش دهند»، «قانون DRD00-J: اطلاعات حساس نبايد در حافظه‌هاي خارجي (SD card) ذخيره شوند مگر اينكه ابتدا رمز شوند» و «قانون DRD11-J: از نگهداري ايمن داده حساس، مطمئن شويد». شرح اين قوانين در مقالات آتي خواهد آمد.
ارزيابي خطر
افشاي اطلاعات حساس خارج از محدوده مورد اعتماد، ايده خوبي نيست.
 
قانون IDS16-J –جلوگيري از تزريق XML
زبان XML براي كمك به ذخيره‌سازي،ساختاردهي و انتقال داده طراحي شده است. XML به دليل مستقل از پلت‌فرم بودن، انعطاف‌پذيري و سادگي نسبي، در تعداد كثيري از برنامه‌هاي كاربردي استفاده مي‌شود. اما اين زبان به دليل چند منظوره بودن، نسبت به طيف گسترده‌اي از حملات از جمله تزريق XML آسيب‌پذير است.
كاربري كه امكان فراهم كردن داده رشته ورودي مندرج در يك سند XML را دارد، مي‌تواند برچسب‌هاي XML را تزريق نمايد. اين برچسب‌ها به وسيله XML parser تفسير مي‌شوند و ممكن است منجر به بازنويسي و تغيير داده شوند.
يك برنامه كاربردي فروشگاه آنلاين كه كاربر در آن امكان مشخص كردن تعداد يك كالاي در دسترس براي خريد را دارد، مي‌تواند سند XML زير را ايجاد كند:
مهاجم ممكن است به جاي وارد كردن عدد براي تعداد، رشته زير را وارد نمايد:
در اين حالت، سند XML به صورت زير در خواهد آمد:
 
در اين مثال، ممكن است XML Parser سند XML را بدين صورت تفسير كند كه دومين فيلد قيمت، اولين فيلد را تغيير داده و قيمت اين كالا را به يك دلار تغيير داده است. از سويي ديگر، ممكن است مهاجم قادر به تزريق كاراكترهاي خاص، مانند بلوك‌هاي توضيحات (comment blocks) و CDATA delimiter ها، كه مفهوم سند XML را مخدوش مي‌كند، باشد.
يك نمونه ناسازگار با قانون
در اين مثال، متد كلاينت از الحاق رشته براي ساختن پرس و جوي XML جهت ارسال به سرور استفاده مي‌كند. از آنجاييكه اين متد اعتبار سنجي ورودي را انجام نمي‌دهد، تزريق XML امكان پذير است.
راه حل سازگار با قانون (اعتبار سنجي ورودي)
بسته به داده خاص و مفسر دستور يا parser كه داده به آن فرستاده مي‌شود، بايد از متدهاي مناسب براي پاك‌سازي ورودي كاربر غيرمعتمد استفاده شود. راه حل سازگار زير، quantity را از اين جهت كه بايد عددي صحيح غيرعلامت‌دار باشد، اعتبارسنجي مي كند.
راه حل سازگار با قانون (شماي XML)
مكانيزم عام‌تر براي بررسي XML جهت جلوگيري از تزريق، اعتبارسنجي آن با استفاده از تعيين نوع سند (DTD) يا شِما است. شِما بايد دقيق تعريف شده باشد تا از اشتباه گرفتن تزريق به عنوان يك XML معتبر جلوگيري شود. از شِماي ذيل مي‌توان براي اعتبارسنجي قطعه XML استفاده كرد:
اين شِما به عنوان فايل schema.xsd در دسترس خواهد بود. اين راه حل سازگاري از اين شِما براي جلوگيري از موفقيت تزريق XML استفاده مي‌كند. همچنين اين راه حل، به كلاسي با نام CustomResolver، كه در قانون IDS17-J براي جلوگيري از حملات موجوديت خارجي XML (XXE) تعريف خواهد شد، وابسته است.
استفاده از شِما يا DTD براي سنجش اعتبار XML هنگامي مناسب است كه سند XML ي دريافت شده باشد كه ممكن است با ورودي پاك‌سازي نشده بارگذاري شده باشد. اما اگر چنين رشته XML ي ساخته نشده باشد، پاك‌سازي ورودي قبل از ساختن XML كارايي بهتري دارد.
ارزيابي خطر
كوتاهي در پاك‌سازي ورودي كاربر قبل از پردازش يا ذخيره‌سازي آن مي‌تواند منجر به حملات تزريق شود.
مطالب مرتبط:
برنامه‌نويسي امن با زبان جاوا - آشنايي
برنامه‌نويسي امن با زبان جاوا - اعتبارسنجي ورودي و پاكسازي داده‌ها
برنامه‌نويسي امن با زبان جاوا – نشت اطلاعات حساس
برنامه‌نويسي امن با زبان جاوا – نشت قابليت ها
برنامه‌نويسي امن با زبان جاوا – انكار سرويس
برنامه‌نويسي امن با زبان جاوا – ارتقاي حق دسترسي
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها - آشنايي
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS00-J – قسمت دوم
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS00-J – قسمت اول
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS01-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS02-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانون IDS03-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانونIDS04-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانونIDS05-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانونIDS06-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانونIDS07-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانونIDS08-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانونIDS09-J
برنامه‌نويسي امن با زبان جاوا – قوانين اعتبارسنجي ورودي و پاكسازي داده‌ها – قانونIDS10-J و IDS11-J
 
منبع:

نظرات

بدون نظر
شما برای نظر دادن باید وارد شوید

نوشته

 
تاریخ ایجاد: 19 اسفند 1393

دسته‌ها

امتیاز

امتیاز شما
تعداد امتیازها:0