نمایش نتایج 1 تا 15 از 15

نام تاپیک: بررسی امنیت ورودی تابع

  1. #1
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    Exclamation بررسی امنیت ورودی تابع

    دوستان بنظرتون این دوتا تابع میتونن امنیت ورودی رو بررسی کنن؟ نیازه بیشتر از این روش کار بشه؟



    public string GetGovahinameh(string unit, string certificateId, string date)
    {
    try
    {
    if (string.IsNullOrEmpty(unit))
    unit = "";
    if (string.IsNullOrEmpty(certificateId))
    certificateId = "";
    if (string.IsNullOrEmpty(date))
    date = "";
    if (certificateId.ToString() != "")
    {
    if (!CheckParametr(unit.ToString()) || !CheckParametr(certificateId.ToString()) || !CheckParametr(date.ToString()))
    {
    return "ERROR: شما از یک مقدار غیر مجاز استفاده کردید";
    }
    else
    {
    Unit = unit;
    CertificateId = certificateId;
    Date = date;
    return Exqute();
    }
    }
    else if (certificateId == "" || certificateId == null || string.IsNullOrEmpty(certificateId))
    {
    return "ERROR: فیلد شماره گواهینامه نباید خالی باشد";
    }
    return "";
    }
    catch (Exception ex)
    {
    return "ERROR: خطای نامشخصی رخ داده است لطفا دوباره سعی نمایید." + ex.Message;
    }
    }
    private bool CheckParametr(string Value)
    {
    if (Value.ToLower().Contains("select"))
    return false;
    else if (Value.ToLower().Contains("delete"))
    return false;
    else if (Value.ToLower().Contains("update"))
    return false;
    else if (Value.ToLower().Contains("union"))
    return false;
    else if (Value.ToLower().Contains("join"))
    return false;
    else if (Value.ToLower().Contains("drop"))
    return false;
    else if (Value.ToLower().Contains("create"))
    return false;
    else if (Value.ToLower().Contains("table"))
    return false;
    else if (Value.ToLower().Contains("where"))
    return false;
    else if (Value.ToLower().Contains("order by"))
    return false;
    else if (Value.ToLower().Contains("group by"))
    return false;
    else if (Value.ToLower().Contains("having "))
    return false;
    else if (Value.ToLower().Contains("and"))
    return false;
    else if (Value.ToLower().Contains("or"))
    return false;
    else if (Value.ToLower().Contains("in"))
    return false;
    else if (Value.ToLower().Contains("max"))
    return false;
    else if (Value.ToLower().Contains("min"))
    return false;
    else if (Value.ToLower().Contains("count"))
    return false;
    else if (Value.ToLower().Contains("'"))
    return false;
    else if (Value.ToLower().Contains("="))
    return false;
    else if (Value.ToLower().Contains("null"))
    return false;
    else
    {
    return true;
    }
    }


  2. #2
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: بررسی امنیت ورودی تابع

    اگر هدف شما اعتبار سنجی Sql syntax هست میتونی از اعتبار سنجی سمت سرور استفاده کنیhttps://stackoverflow.com/a/6287892/7325558
    و اگر هدف شما جلوگیری از Sql Injection هست اولا لازم به چک کردن تمام کلمات کلیدی script نیست و در ثانی بجای مقایسه های زیاد ، رشته ورودی کاربر در صورتی که دارای کلمات کلیدی(create,drop,delete,update,insert,select ) باشد را با مقدار نال Replace کن.
    First,solve the problem then write the code

  3. #3
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: بررسی امنیت ورودی تابع

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    اگر هدف شما اعتبار سنجی Sql syntax هست میتونی از اعتبار سنجی سمت سرور استفاده کنیhttps://stackoverflow.com/a/6287892/7325558
    و اگر هدف شما جلوگیری از Sql Injection هست اولا لازم به چک کردن تمام کلمات کلیدی script نیست و در ثانی بجای مقایسه های زیاد ، رشته ورودی کاربر در صورتی که دارای کلمات کلیدی(create,drop,delete,update,insert,select ) باشد را با مقدار نال Replace کن.
    این موردو برای استفاده در وب سرویسم در نظر گرفتم. برای جلوگیری از sql injection اینکارو دارم میکنم.اولین باره دارم وب سرویس مینویسم نمیخوام الکی کار دست خودم بدم. کلا برای چک کردن ورودی های کاربر این مورد کافیه؟(مورد آخرتون رو بیشتر توضیح میدید)

  4. #4
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: بررسی امنیت ورودی تابع

    نگاهی به وب سرویس ها انداخته باشی ،پیاده سازی آن بصورت متد هایی هست که دادهای کاربر رو از طریق کلاس های تعریف شده در آن دریافت میکنند.اصولا دریافت کویری sql از وب سرویس اشتباه میباشد.شما وب سرویس رو به دو لایه برنامه نویسی Model و Service تقسیم کنید متدها و کلاس های لازم رو در سطح سرویس پیاده سازی کن که کاربر به آن دسترسی دارد.و لایه Model که دسترسی آن فقط از طریق لایه Service امکان پذیر است و کاربر امکان دسترسی مستقیم به متدهای آن را ندارد و و ظیفه دریافت اطلاعات از لایه سرویس و اعمال ان در دیتابیس هست.در لایه Model از Linq to Sql ویا Entityframework استفاده کنی ریسک Sql injection به پایین میاد.
    در مورد توضیح:

    public string RemoveSqlScript(string userInput)
    {
    if(userInput==null)return string.Empty;
    return userInput.Replce("create","").Replce("delete",""). Replce("drop","");
    }
    First,solve the problem then write the code

  5. #5
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: بررسی امنیت ورودی تابع

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    نگاهی به وب سرویس ها انداخته باشی ،پیاده سازی آن بصورت متد هایی هست که دادهای کاربر رو از طریق کلاس های تعریف شده در آن دریافت میکنند.اصولا دریافت کویری sql از وب سرویس اشتباه میباشد.شما وب سرویس رو به دو لایه برنامه نویسی Model و Service تقسیم کنید متدها و کلاس های لازم رو در سطح سرویس پیاده سازی کن که کاربر به آن دسترسی دارد.و لایه Model که دسترسی آن فقط از طریق لایه Service امکان پذیر است و کاربر امکان دسترسی مستقیم به متدهای آن را ندارد و و ظیفه دریافت اطلاعات از لایه سرویس و اعمال ان در دیتابیس هست.در لایه Model از Linq to Sql ویا Entityframework استفاده کنی ریسک Sql injection به پایین میاد.
    در مورد توضیح:

    public string RemoveSqlScript(string userInput)
    {
    if(userInput==null)return string.Empty;
    return userInput.Replce("create","").Replce("delete",""). Replce("drop","");
    }
    تقریبا همین روالی که فرومدید دارم پیش میرم. یه لایه دسترسی به داده ها دارم. یه لایه سرویس و یه لایه مابین این دوتا که این دو رو به هم مرتبط میکنه. من این متد ها رو داخل لایه میانی نوشتم که ورودی رو کنترل کنه و بفرسته به لایه دیتا اکسس و نتیجه رو بگیره و برگردونه به سرویس. هیچ دسترسی مستقیمی از لایه سرویس به لایه دیتااکسس وجود نداره.بازم اگه راهی که پیش میرم اشتباهه ممنون میشم راهنمایی کنید.

  6. #6
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: بررسی امنیت ورودی تابع

    لازم به لایه میانی نیست شما اعتبارسنجی داده های ورودی را درلایه Service می نویسی در صورت معتبر نبودن لازم نیست به لایه Model پاس شود . در همان لایه Service در صورت معتبر نبودن پیام خطا به کاربر برگرداند
    First,solve the problem then write the code

  7. #7
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: بررسی امنیت ورودی تابع

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    لازم به لایه میانی نیست شما اعتبارسنجی داده های ورودی را درلایه Service می نویسی در صورت معتبر نبودن لازم نیست به لایه Model پاس شود . در همان لایه Service در صورت معتبر نبودن پیام خطا به کاربر برگرداند
    مهندس جان در ضمن من تصاویر رو با فرمت base64 برمیگردونم که گاها زمان اجراش وقتی حجم عکس یا فایل زیاد باشه طول میکشه تا برگردونه.به نظرتون برا کاهش این زمان میشه کاری کرد؟

  8. #8

    نقل قول: بررسی امنیت ورودی تابع

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    نگاهی به وب سرویس ها انداخته باشی ،پیاده سازی آن بصورت متد هایی هست که دادهای کاربر رو از طریق کلاس های تعریف شده در آن دریافت میکنند.اصولا دریافت کویری sql از وب سرویس اشتباه میباشد.شما وب سرویس رو به دو لایه برنامه نویسی Model و Service تقسیم کنید متدها و کلاس های لازم رو در سطح سرویس پیاده سازی کن که کاربر به آن دسترسی دارد.و لایه Model که دسترسی آن فقط از طریق لایه Service امکان پذیر است و کاربر امکان دسترسی مستقیم به متدهای آن را ندارد و و ظیفه دریافت اطلاعات از لایه سرویس و اعمال ان در دیتابیس هست.در لایه Model از Linq to Sql ویا Entityframework استفاده کنی ریسک Sql injection به پایین میاد.
    در مورد توضیح:

    public string RemoveSqlScript(string userInput)
    {
    if(userInput==null)return string.Empty;
    return userInput.Replce("create","").Replce("delete",""). Replce("drop","");
    }
    آیا نمونه پروژه ای با وب سرویس دارید تا از اون الگو برداری بشه
    تشکر

  9. #9

    نقل قول: بررسی امنیت ورودی تابع

    اگر مقادیر رو با پارامتر به دیتابیس ارسال کنید دیگه نیازی به این کارها نیست.

  10. #10
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: بررسی امنیت ورودی تابع

    سلام
    خیلی پیچیده فکر می کنید حذف کلمات کار اشتباهی است چون یک رشته انگلیسی درونش شاید از لغت مثلا" Delete استفاده کرده باشد شما برای رشته های ورودی فقط کارکتر ' را حذف کن SQL Injection کارش تمام است و یا از SP استفاده کنید و درون SP از Dynamic SQL استفاده نکنید

  11. #11
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: بررسی امنیت ورودی تابع

    نقل قول نوشته شده توسط ASKaffash مشاهده تاپیک
    سلام
    خیلی پیچیده فکر می کنید حذف کلمات کار اشتباهی است چون یک رشته انگلیسی درونش شاید از لغت مثلا" Delete استفاده کرده باشد شما برای رشته های ورودی فقط کارکتر ' را حذف کن SQL Injection کارش تمام است و یا از SP استفاده کنید و درون SP از Dynamic SQL استفاده نکنید
    سلام. بله میدونم ممکنه کلمات کلیدی دیگه ای هم استفاده بشه . اما ورودی من مشخصه که باید چی باشه یه سری حرف و عدد شبیه TRA96/442-110104 این هست که قسمت عددیش فرق میکنه.
    بازم ممنون بابت اعلام نظر مفیدتون

  12. #12

    نقل قول: بررسی امنیت ورودی تابع

    سلام
    همونطور که آقای افراد فرمودند ، اگر در لایه دیتا از ADO.Net استفاده می کنید ، کافیه از پارامترها استفاده کنید ، به این ترتیب نگرانی از بابت Sql Injection وجود نداره.
    بنابراین نیازی به چک کردن ورودی ها به این شکل وجود نداره ، درسته شما ورودی ها رو باید برای صحتشون در لایه Business چک کنید اما نه این مفهومی که در سوالتون اشاره کردید
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  13. #13
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: بررسی امنیت ورودی تابع

    نقل قول نوشته شده توسط محمد آشتیانی مشاهده تاپیک
    سلام
    همونطور که آقای افراد فرمودند ، اگر در لایه دیتا از ADO.Net استفاده می کنید ، کافیه از پارامترها استفاده کنید ، به این ترتیب نگرانی از بابت Sql Injection وجود نداره.
    بنابراین نیازی به چک کردن ورودی ها به این شکل وجود نداره ، درسته شما ورودی ها رو باید برای صحتشون در لایه Business چک کنید اما نه این مفهومی که در سوالتون اشاره کردید
    استاد در مورد برگردوندن عکس به صورت base64 در وب سرویس نظری ندارید؟ گاها این مورد زمان زیادی طول میکشه تا عکس رو برگردونه .

  14. #14

    نقل قول: بررسی امنیت ورودی تابع

    سلام
    طول مکیشه چون حجم عکس به هر حال زیاده ، علاوه بر این زمانی هم صرف تبدیل عکس به Base64 میشه ، کار خاصی به نظر بنده نمیرسه که بشه انجام داد
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  15. #15
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: بررسی امنیت ورودی تابع

    نقل قول نوشته شده توسط محمد آشتیانی مشاهده تاپیک
    سلام
    طول مکیشه چون حجم عکس به هر حال زیاده ، علاوه بر این زمانی هم صرف تبدیل عکس به Base64 میشه ، کار خاصی به نظر بنده نمیرسه که بشه انجام داد
    ممنون بابت اظهار نظر مفیدتون

تاپیک های مشابه

  1. بررسی امنیت مقادیر ورودی در yii
    نوشته شده توسط mohamadali1374 در بخش Yii Framework
    پاسخ: 1
    آخرین پست: یک شنبه 08 فروردین 1395, 05:54 صبح
  2. بررسی امنیت مقادیر ورودی در yii
    نوشته شده توسط mohamadali1374 در بخش PHP
    پاسخ: 0
    آخرین پست: چهارشنبه 04 فروردین 1395, 15:34 عصر
  3. بررسی امنیت نرم افزار (Crack me)
    نوشته شده توسط SalarSoft در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 11
    آخرین پست: پنج شنبه 25 بهمن 1386, 13:25 عصر
  4. بررسی امنیت سایت
    نوشته شده توسط night11 در بخش ASP.NET Web Forms
    پاسخ: 43
    آخرین پست: سه شنبه 16 بهمن 1386, 15:20 عصر
  5. نیاز به یک مقاله بررسی امنیت ویندوز و لینوکس
    نوشته شده توسط حامد مصافی در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 4
    آخرین پست: دوشنبه 03 بهمن 1384, 01:29 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •