نمایش نتایج: از شماره 1 تا 6 , از مجموع 6

موضوع: در خواست تابعی برای ایمن سازی داده های دریافتی از کاربران

  1. #1
    عضو انجمن iroo آواتار ها
    تاریخ عضویت
    Apr 2015
    نوشته ها
    561
    تشکر تشکر کرده 
    1,482
    تشکر تشکر شده 
    211
    تشکر شده در
    169 پست

    پیش فرض در خواست تابعی برای ایمن سازی داده های دریافتی از کاربران

    سلام و خسته نباشید
    من میخواستم یک تابع داشته باشم که هر داده ای رو از کاربر و یا url دریافت کردم رو از طریق این تابع ایمن سازی بکنم
    ممنون میشم یک تابع جامع و مطمئن رو معرفی کنید
    تشکر
    انجمن سئو فروم (Https://seoforum.ir)؛ تالار پرسش و پاسخ سئو و دیجیتال مارکتینگ ایران

  2. # ADS




     

  3. #2
    عضو جدید
    تاریخ عضویت
    Feb 2017
    نوشته ها
    43
    تشکر تشکر کرده 
    29
    تشکر تشکر شده 
    49
    تشکر شده در
    25 پست

    پیش فرض پاسخ : در خواست تابعی برای ایمن سازی داده های دریافتی از کاربران

    سلام.
    واسه این کار در PHP چندین تابع وجود داره. در ضمن باید مشخص بشه قصدتون دقیقا چه نوع ایمن سازی ای هست.
    کلا 3 نوع ایمن سازی داده داریم:


    • Validating
    • Sanitizing
    • Escaping


    Validating یا معتبرسازی: مواقعی استفاده میشه که شما قصد داشته باشی نوع خاصی از داده ورودی رو دریافت کنی. مثلا شماره موبایل، جنسیت، لیست شهرها و ...
    نوشتن توابع معتبرسازی هم به عهده ی خود کاربره (البته هستند توابع و کلاسهایی که این کارها رو بکنند ولی برخی مواقع پیش میاد که شما میخوایید داده ورودی کاربر یه فرم خاص باشه. مثلا اجازه ثبت نام فقط و فقط با شماره خط رایتل! که چک کردن اینکه آیا داده ورودی مربوط به تلفن همراه، به فرم درست پیش شماره های رایتل دریافت شده یا خیر به عهده شماست و می تونید به فرض از تابع preg_match استفاده کنید.)

    Sanitizing یا پاکسازی: در پاکسازی داده، داده ورودی در برابر انواع کدهای مخرب چک میشه. مثلا کابر کد جاوا اسکریپت تا تگهای html رو وارد نکنه و ... چند تا از توابع این کار:



    • htmlentities
    • htmlspecialchars
    • strip_tags


    Escaping: اینجا باید حواسمون باشه که داده کاربر رو چطور میخواییم نمایش بدیم و چطور میخواییم ذخیره کنیم!
    یعنی چی؟ یعنی ما با استفاده از Validating, Sanitizing مطمئن شدیم که کاربر داده های معتبری وارد کرده و همچنین مثلا تگهایی رو هم که دوست نداشتیم وارد کنه رو از ورودی پاک کردیم. حالا به فرض ممکنه ما اجازه داده باشیم که کاربر از تگهای b, center, video, audio, p, a واسه داده ورودی استفاده کرده باشه. خوب، تا اینجای کار مشکلی نیست و داده درست و طبق چیزی که خواستیم ذخیره شده. حالا واسه نمایش، شاید توی صفحه خاص دوست نداشته باشیم که اون داده کاربر که با تگ b و به صورت بولد ذخیره شده بوده به صورت بولد هم نمایش داده بشه! اینجاست که از escaping استفاده می کنیم. یعنی اجازه نمیدیم کدهای ذخیره شده، کاری رو که قرار بوده بکنند انجام بدند! امیدوارم متوجه شده باشید چی میگم. یا مثلا موقع ثبت داده در پایگاه داده. باید مواظب باشیم که SQL Injection کار دستمون نده!

    شما اگه این 3 مفهوم رو خوب متوجه بشید به سادگی میتونید سایتتون رو ایمن کنید. البته اینها ایمن سازی سمت کد هستند و ایمن سازی سمت سرور هم یه بحث جداست!

    راستی حواستون به cross site request forgery هم باشه. اگر ما سایت رو در برابر حملات XSS یا cross site scripting مقاوم کنیم باید حواسمون به cross site request forgery هم باشه که مبادا همه چی رو رعایت کرده باشیم ولی از این نقطه که اکثر افراد هم ازش غافل هستند سایتمون آسیب ببینه.

    موفق باشید.

  4. تعداد تشکر ها از server95 به دلیل پست مفید


  5. #3
    عضو انجمن iroo آواتار ها
    تاریخ عضویت
    Apr 2015
    نوشته ها
    561
    تشکر تشکر کرده 
    1,482
    تشکر تشکر شده 
    211
    تشکر شده در
    169 پست

    پیش فرض پاسخ : در خواست تابعی برای ایمن سازی داده های دریافتی از کاربران

    نقل قول نوشته اصلی توسط server95 نمایش پست ها
    سلام.واسه این کار در PHP چندین تابع وجود داره. در ضمن باید مشخص بشه قصدتون دقیقا چه نوع ایمن سازی ای هست. کلا 3 نوع ایمن سازی داده داریم:
    • Validating
    • Sanitizing
    • Escaping

    Validating یا معتبرسازی: مواقعی استفاده میشه که شما قصد داشته باشی نوع خاصی از داده ورودی رو دریافت کنی. مثلا شماره موبایل، جنسیت، لیست شهرها و ...نوشتن توابع معتبرسازی هم به عهده ی خود کاربره (البته هستند توابع و کلاسهایی که این کارها رو بکنند ولی برخی مواقع پیش میاد که شما میخوایید داده ورودی کاربر یه فرم خاص باشه. مثلا اجازه ثبت نام فقط و فقط با شماره خط رایتل! که چک کردن اینکه آیا داده ورودی مربوط به تلفن همراه، به فرم درست پیش شماره های رایتل دریافت شده یا خیر به عهده شماست و می تونید به فرض از تابع preg_match استفاده کنید.)Sanitizing یا پاکسازی: در پاکسازی داده، داده ورودی در برابر انواع کدهای مخرب چک میشه. مثلا کابر کد جاوا اسکریپت تا تگهای html رو وارد نکنه و ... چند تا از توابع این کار:
    • htmlentities
    • htmlspecialchars
    • strip_tags

    Escaping: اینجا باید حواسمون باشه که داده کاربر رو چطور میخواییم نمایش بدیم و چطور میخواییم ذخیره کنیم!یعنی چی؟ یعنی ما با استفاده از Validating, Sanitizing مطمئن شدیم که کاربر داده های معتبری وارد کرده و همچنین مثلا تگهایی رو هم که دوست نداشتیم وارد کنه رو از ورودی پاک کردیم. حالا به فرض ممکنه ما اجازه داده باشیم که کاربر از تگهای b, center, video, audio, p, a واسه داده ورودی استفاده کرده باشه. خوب، تا اینجای کار مشکلی نیست و داده درست و طبق چیزی که خواستیم ذخیره شده. حالا واسه نمایش، شاید توی صفحه خاص دوست نداشته باشیم که اون داده کاربر که با تگ b و به صورت بولد ذخیره شده بوده به صورت بولد هم نمایش داده بشه! اینجاست که از escaping استفاده می کنیم. یعنی اجازه نمیدیم کدهای ذخیره شده، کاری رو که قرار بوده بکنند انجام بدند! امیدوارم متوجه شده باشید چی میگم. یا مثلا موقع ثبت داده در پایگاه داده. باید مواظب باشیم که SQL Injection کار دستمون نده! شما اگه این 3 مفهوم رو خوب متوجه بشید به سادگی میتونید سایتتون رو ایمن کنید. البته اینها ایمن سازی سمت کد هستند و ایمن سازی سمت سرور هم یه بحث جداست! راستی حواستون به cross site request forgery هم باشه. اگر ما سایت رو در برابر حملات XSS یا cross site scripting مقاوم کنیم باید حواسمون به cross site request forgery هم باشه که مبادا همه چی رو رعایت کرده باشیم ولی از این نقطه که اکثر افراد هم ازش غافل هستند سایتمون آسیب ببینه.موفق باشید.
    بسیار ممنون و متشکرم از توضیحات جامعتونراستش داشتم یک ویدئو آموزشی رو میدیدم که هر داده ای رو از کاربر میگرفت یک بار میفرست به اون تابعمیخواستم اون تابع رو داشته باشیم cross site request forgery چیه این؟
    انجمن سئو فروم (Https://seoforum.ir)؛ تالار پرسش و پاسخ سئو و دیجیتال مارکتینگ ایران

  6. #4
    عضو جدید
    تاریخ عضویت
    Feb 2017
    نوشته ها
    43
    تشکر تشکر کرده 
    29
    تشکر تشکر شده 
    49
    تشکر شده در
    25 پست

    پیش فرض پاسخ : در خواست تابعی برای ایمن سازی داده های دریافتی از کاربران

    نقل قول نوشته اصلی توسط iroo نمایش پست ها
    بسیار ممنون و متشکرم از توضیحات جامعتونراستش داشتم یک ویدئو آموزشی رو میدیدم که هر داده ای رو از کاربر میگرفت یک بار میفرست به اون تابعمیخواستم اون تابع رو داشته باشیم cross site request forgery چیه این؟
    خواهش میکنم.
    شما میتونید تمام داده های ورودی رو بدید به یکی از توابع Sanitization و خیال خودتون رو راحت کنید اما نه صد در صد. در ضمن این کار توصیه نمیشه. شما باید بدونید میخوایید با داده چکار کنید و طبق همون سیاست پیش برید. مثلا شاید یه فیلد ورود داده ی ویزی ویگ داشته باشید. به فرض، استفاده از تابع strip_tags باعث میشه که ورودی کابر آسیب ببینه و درست ذخیره نشه!

    CSRF هم مواقعی استفاده میشه که قصد داشته باشیم مطمئن باشیم داده ی کاربر از محل درست داره وارد میشه و نه جای دیگه! دقیقا همون کاری که wp nonce field توی وردپرس انجام میده.


  7. تعداد تشکر ها از server95 به دلیل پست مفید


  8. #5
    عضو انجمن AtrafNet آواتار ها
    تاریخ عضویت
    Nov 2016
    نوشته ها
    259
    تشکر تشکر کرده 
    2,584
    تشکر تشکر شده 
    729
    تشکر شده در
    417 پست

    پیش فرض پاسخ : در خواست تابعی برای ایمن سازی داده های دریافتی از کاربران

    سلام
    این تابع پیشنهادی سایت w3schools.com برای ایمن سازی ورودی ها هستش:

    کد PHP:
    function test_input($data) {
      
    $data trim($data);
      
    $data stripslashes($data);
      
    $data htmlspecialchars($data);
      return 
    $data;

    منبع: https://www.w3schools.com/php/php_form_validation.asp

  9. تعداد تشکر ها از AtrafNet به دلیل پست مفید


  10. #6
    عضو انجمن
    تاریخ عضویت
    Aug 2011
    نوشته ها
    146
    تشکر تشکر کرده 
    36
    تشکر تشکر شده 
    264
    تشکر شده در
    167 پست

    پیش فرض پاسخ : در خواست تابعی برای ایمن سازی داده های دریافتی از کاربران

    خودت یک تابع بنویس بر اساس نوع ورودی ***** کنه:
    کد:
    function clean($input, $type)
    {
        switch($type)
        {
            case 'int':
                return intval($input);
            break;
            case 'float':
                return floatval($input);
            break;
            case 'nohtml':
                return htmlspecialchars($input);
            break;
            case 'html':
                return floatval($input);
            break;
        }
    }
    
    $input = mysqli_real_escape_string($input);
    جشنواره وب ایران یا جشنواره معرفی دوستان!!!

  11. تعداد تشکر ها از MJmoonwalk به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 0
    آخرين نوشته: January 2nd, 2016, 10:10
  2. درخواست طراحی اسکریپت تبلیغاتی شبکه های اجتماعی
    توسط dbone در انجمن درخواست خدمات برنامه نویسی
    پاسخ ها: 2
    آخرين نوشته: November 30th, 2015, 09:11
  3. پاسخ ها: 3
    آخرين نوشته: September 2nd, 2013, 20:11
  4. درخواست vps با پینگ خوب/بدون قطعی/سیستم عامل k/ضمانتی
    توسط Punisher در انجمن درخواست سرور مجازی
    پاسخ ها: 5
    آخرين نوشته: April 16th, 2013, 19:02
  5. پاسخ ها: 84
    آخرين نوشته: July 27th, 2012, 17:19

مجوز های ارسال و ویرایش

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