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

نام تاپیک: ایجاد ارتباط امن بین برنامه و سرور

  1. #1

    ایجاد ارتباط امن بین برنامه و سرور

    با سلام و خسته نباشید خدمت دوستان عزیز و محترم

    آیا کدی - روشی - راه حلی سراغ دارید که بشه ارتباط بین برنامه و سرور رو از هر لحاظ امن کرد و هکر هارو شکست داد؟
    در قسمتی از برنامم یوزر کاربر رو به صورت POST یا GET به صفحه php میفرستم تا اطلاعات کاربریشو بگیرم و بهش نشون بدم و مشکلی که هست اگر آدرس این صفحه php به هر نحوی به دست یک هکر افتاد حتی اگر خیلی حرفه ای هم نباشه با در دست داشتن یوزر یک کاربر و ارسال آن به صفحه php تمام اطلاعات این کاربر در خروجی این صفحه چاپ میشه و در اختیار این هکر قرار میگیره و خیلی مشکلات به وجود میاد.

    ممنون میشم دوستان عزیز راهنمایی کنید برنامه ای که در حال ساختش هستم از هر نظر خیلی برام مهمه و این بحث امنیت برای هر برنامه ای بزرگ و مهم خیلی خیلی ضروریه
    پیشاپیش ممنون
    شبتون بخیر

  2. #2
    کاربر دائمی آواتار mz6488
    تاریخ عضویت
    تیر 1391
    محل زندگی
    قشم
    پست
    429

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    سلام.واس نمایش اطلاعات محرمانه بهتره که علاوه بر نام کاربری،باید رمز عبور رو هم بفرستید تا سمت سرور اول نام کاربری و رمز عبور بررسی شه و در صورت مطابقت داشتن عملیات رو انجام بده
    راه های امن سازی سرور هم هرچند ممکن باز شکسته بشه ولی انجامش کاملا ضروریه:
    1-نصب ssl روی سرور و استفاده از https به جای http
    2-مبهم سازی آدرس های وب سرویس
    3-رمزنگاری اطلاعات سمت سرور(عملیات رمز نگاری و رمزگشایی کاملا تو سرور انجام میشه.با خود mysql خیلی راحت این کار انجام میشه)

  3. #3
    کاربر دائمی آواتار sara_aryanfar
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    جایی در ایران
    پست
    1,507

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط mahmood.m مشاهده تاپیک
    با سلام و خسته نباشید خدمت دوستان عزیز و محترم

    آیا کدی - روشی - راه حلی سراغ دارید که بشه ارتباط بین برنامه و سرور رو از هر لحاظ امن کرد و هکر هارو شکست داد؟
    در قسمتی از برنامم یوزر کاربر رو به صورت POST یا GET به صفحه php میفرستم تا اطلاعات کاربریشو بگیرم و بهش نشون بدم و مشکلی که هست اگر آدرس این صفحه php به هر نحوی به دست یک هکر افتاد حتی اگر خیلی حرفه ای هم نباشه با در دست داشتن یوزر یک کاربر و ارسال آن به صفحه php تمام اطلاعات این کاربر در خروجی این صفحه چاپ میشه و در اختیار این هکر قرار میگیره و خیلی مشکلات به وجود میاد.

    ممنون میشم دوستان عزیز راهنمایی کنید برنامه ای که در حال ساختش هستم از هر نظر خیلی برام مهمه و این بحث امنیت برای هر برنامه ای بزرگ و مهم خیلی خیلی ضروریه
    پیشاپیش ممنون
    شبتون بخیر
    خب نکته اول این مشکل برنامه نویسی شما هست که به این روش عمل کردید که کاملا اشتباه هست حالا تصور شما اینه که طرف فقط با نام کاربری می تونه اطلاعات اون کاربرو بگیره در حالی که احتمالا می تونه کل دیتابیس رو بزنه
    در حالت کلی ما امنیت 100 درصد نداریم و هیچ کس هم نمی تونه چنین ادعایی داشته باشه اما خب فرق هست بین اینکه سایت رو یه هکر کار کشته بزنه با اینکه یه تازه کار بیاد برا تمرین سایت شما رو بزنه مورد دوم واقعا نشانگر مشکل برنامه نویس هست چون با برخی کارهای اولیه این دسته از هکر ها از رده خارج میشن و اون گردن کلفتا هم خیلی خیلی کم پیش میاد بیان سراغ سایت ایرانی و از این کارا بکنن
    بهترین راهکار ارتباط با استفاده از وب سرویس هست یعنی شما دخواست خودتون رو همراه با نام کاربری و پسورد به وبسرویس ارسال کنید و اونجا پس از اعتبار سنجی لازم برای نام کاربری و پسورد اطلاعات کاربر رو براش ارسال کنید این از مسیر امن حالا طراحی مناسب و هاست مناسب هم برخی دیگر از موارد رعایت امنیت هستند که باید رعایت کنید با چنین اقداماتی دیگه سرویس شما حد اقل توسط تازه کارها زده نمیشه

  4. #4
    کاربر دائمی آواتار sara_aryanfar
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    جایی در ایران
    پست
    1,507

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط mz6488 مشاهده تاپیک
    سلام.واس نمایش اطلاعات محرمانه بهتره که علاوه بر نام کاربری،باید رمز عبور رو هم بفرستید تا سمت سرور اول نام کاربری و رمز عبور بررسی شه و در صورت مطابقت داشتن عملیات رو انجام بده
    راه های امن سازی سرور هم هرچند ممکن باز شکسته بشه ولی انجامش کاملا ضروریه:
    1-نصب ssl روی سرور و استفاده از https به جای http
    2-مبهم سازی آدرس های وب سرویس
    3-رمزنگاری اطلاعات سمت سرور(عملیات رمز نگاری و رمزگشایی کاملا تو سرور انجام میشه.با خود mysql خیلی راحت این کار انجام میشه)
    با بقیه حرفاتون که بیشتر برای امنیت سرور هست موافقم اما این آخری رو متوجه نشدم چرا باید هم رمزنگاری و هم رمزگشایی داخل سرور باشه ؟ اصلا چه ارزشی داره اونوقت وقتی داخل سرور یک عملیات هست یعنی مراحل اهراز هویت رد شده و تنها گزینه عاقلانه رمزگشایی داده ای هست که در سمت کاربر رمزنگاری شده یعنی اصول کار فکر کنم همینه در سمت کاربر ما چیزی رو رمز می کنیم تا در حین ارتباط اگر این داده لو رفت کاربرد نداشته باشه و در سمت سرور هم رمزگشایی میشه

  5. #5
    کاربر دائمی آواتار mz6488
    تاریخ عضویت
    تیر 1391
    محل زندگی
    قشم
    پست
    429

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط sara_aryanfar مشاهده تاپیک
    با بقیه حرفاتون که بیشتر برای امنیت سرور هست موافقم اما این آخری رو متوجه نشدم چرا باید هم رمزنگاری و هم رمزگشایی داخل سرور باشه ؟ اصلا چه ارزشی داره اونوقت وقتی داخل سرور یک عملیات هست یعنی مراحل اهراز هویت رد شده و تنها گزینه عاقلانه رمزگشایی داده ای هست که در سمت کاربر رمزنگاری شده یعنی اصول کار فکر کنم همینه در سمت کاربر ما چیزی رو رمز می کنیم تا در حین ارتباط اگر این داده لو رفت کاربرد نداشته باشه و در سمت سرور هم رمزگشایی میشه
    اینکه عملیات رمزنگاری و رمزگشایی سمت سرور باشه منظورم تو قسمت ذخیره داده هاس که مثلا رمز عبور به صورت شفاف داخل دیتابیس ذخیره نشه چون ممکن به روش های مختلفی داده ها لو بره.حالا اگه یک قسمت از عملیات رمزنگاری و رمزگشایی سمت کاربر صورت بگیره ممکن از طریق مهندسی معکوس خیلی راحت رشته انکد شده رو دیکد کنه چون سورس اپ در نهایت باز میشه

  6. #6

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط sara_aryanfar مشاهده تاپیک
    خب نکته اول این مشکل برنامه نویسی شما هست که به این روش عمل کردید که کاملا اشتباه هست حالا تصور شما اینه که طرف فقط با نام کاربری می تونه اطلاعات اون کاربرو بگیره در حالی که احتمالا می تونه کل دیتابیس رو بزنه
    در حالت کلی ما امنیت 100 درصد نداریم و هیچ کس هم نمی تونه چنین ادعایی داشته باشه اما خب فرق هست بین اینکه سایت رو یه هکر کار کشته بزنه با اینکه یه تازه کار بیاد برا تمرین سایت شما رو بزنه مورد دوم واقعا نشانگر مشکل برنامه نویس هست چون با برخی کارهای اولیه این دسته از هکر ها از رده خارج میشن و اون گردن کلفتا هم خیلی خیلی کم پیش میاد بیان سراغ سایت ایرانی و از این کارا بکنن
    بهترین راهکار ارتباط با استفاده از وب سرویس هست یعنی شما دخواست خودتون رو همراه با نام کاربری و پسورد به وبسرویس ارسال کنید و اونجا پس از اعتبار سنجی لازم برای نام کاربری و پسورد اطلاعات کاربر رو براش ارسال کنید این از مسیر امن حالا طراحی مناسب و هاست مناسب هم برخی دیگر از موارد رعایت امنیت هستند که باید رعایت کنید با چنین اقداماتی دیگه سرویس شما حد اقل توسط تازه کارها زده نمیشه
    با سلام

    واقعا حق با شماست.
    نتیجه ای که از توضیحات شما دوستان گرفتم:
    باید نام کاربری رو همراه با پسورد به سرور ارسال کنم و اعتبار سنجی بشه و اگه مطابقت داشت اطلاعات کاربر رو به سمت برنامه ارسال کنه.
    کاربر mz6488 به نکته ی دیگه ای هم اشاره کردن که اطلاعات کاربر رو رمزنگاری و رمزگشایی کنیم آیا با استفاده از روش اول که اعتبار سنجی باشه بازهم لازمه که این نکته رو هم رعایت کنیم و اگه جواب مثبته میشه خواهش کنم در این مورد توضیحات بیشتری و نمونه کد ارائه کنید خیلی ممنون میشم.

  7. #7
    کاربر دائمی آواتار mz6488
    تاریخ عضویت
    تیر 1391
    محل زندگی
    قشم
    پست
    429

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط mahmood.m مشاهده تاپیک
    با سلام

    واقعا حق با شماست.
    نتیجه ای که از توضیحات شما دوستان گرفتم:
    باید نام کاربری رو همراه با پسورد به سرور ارسال کنم و اعتبار سنجی بشه و اگه مطابقت داشت اطلاعات کاربر رو به سمت برنامه ارسال کنه.
    کاربر mz6488 به نکته ی دیگه ای هم اشاره کردن که اطلاعات کاربر رو رمزنگاری و رمزگشایی کنیم آیا با استفاده از روش اول که اعتبار سنجی باشه بازهم لازمه که این نکته رو هم رعایت کنیم و اگه جواب مثبته میشه خواهش کنم در این مورد توضیحات بیشتری و نمونه کد ارائه کنید خیلی ممنون میشم.
    به هر حال احتیاط شرط عقله و بهتره رمزنگاری رو انچام بدید.روشی که من استفاده میکنم از طریق کد sql
    دستور رمز نگاری

    insert into users (pass) values(aes_encrypt('your_pass','your_key'))

    دستور رمزگشایی

    select cast(AES_DECRYPT(pass,'your_key') as char) from users

  8. #8
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

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

    در حالت معمول، کاربر یکبار لاگین می‌کنه و پس از اون درخواست هایی رو به سمت سرور ارسال می کنه، اگر برای احراز هویت در همه‌ی درخواست ها یوزرنیم و پسورد رو ارسال کنید، معنیش این هست که این اطلاعات کاربر رو باید جایی ذخیره کنید (تا مجبور نباشه هربار پسوردش رو وارد کنه، مثلاً پس از لاگین برای ثبت نظر هم پسوردش رو وارد کنه)

    در عوض هنگام لاگین یک توکن براش تولید می کنید و اون توکن رو در پاسخ ارسال می کنید، این توکن یک رشته‌ی یکتاست که به اون یوزر اختصاص داده شده (تا زمانی که اعتبارش از بین بره)، و یوزر پس از لاگین همراه همه‌ی درخواست ها باید این توکن رو ارسال کنه.

    وقتی هم قراره عملیاتی انجام بشه، اطلاعات کاربر از توکن استخراج میشه و عملیات برای اون یوزر خاص صورت می گیره. یعنی اگر فرض کنیم یوزر بخواد اطلاعاتی رو حذف کنه، تنها باید بتونه اطلاعاتی که مربوط به خودش هست رو حذف کنه. پس سمت سرور درخواست رو که دریافت کردید، اول چک می کنید که توکن موجود باشه و معتبر هم باشه. بعد از توکن User ID رو استخراج می کنید و پس از اون چک می کنید که اطلاعات مورد درخواست برای حذف شدن، آیا مال خود اون یوزر هست یا خیر (تا جلوی این رو بگیرید که یک کاربر با داشتن توکن معتبر، بتونه اطلاعات دیگران رو تغییر بده).

    استفاده از SSL خیلی مهم هست، بخصوص که با وجود سرویس هایی مثل Let's Encrypt، می تونید به رایگان گواهینامه SSL دریافت کنید و هیچ هزینه ای براتون نداره.

    با پنهان سازی یا مبهم سازی آدرس های وب سرویس مخالفم، چون فقط دارید صورت مسئله رو پاک می کنید. یک Public API باید خودش امن باشه، و با مخفی کردن این آدرس ها در کلاینت، یک توهمی از امنیت براتون ایجاد میشه که شاید باعث بشه در دیگر بخش ها کم‌کاری بشه.

    موارد دیگری هم هستن که برای اینکه اطلاعاتتون تخلیه نشه، لازم هستن. مثلن فرض کنیم در برنامه قرار باشه اطلاعات یک محصول خاص نمایش داده بشه، در این حالت احتمالن ID محصول ارسال میشه تا اطلاعات اون محصول رو دریافت کنید، اگر این ID یک شناسه عددی باشه، یه نفر می تونه با توکن معتبر، یک اسکریپت بنویسه که اعداد متفاوت رو به ترتیب ارسال کنه و دیتابیس شما رو تخلیه کنه. برای جلوگیری از این مشکل، ID ها باید از جنس دیگری باشن، مثلن UUID یا حتی یک String.

    اینها موارد ابتدایی هستن و بقیه‌ی موارد بستگی به ساختار پروژه و نیازمندی های اون داره.

  9. #9

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط mz6488 مشاهده تاپیک
    به هر حال احتیاط شرط عقله و بهتره رمزنگاری رو انچام بدید.روشی که من استفاده میکنم از طریق کد sql
    دستور رمز نگاری

    insert into users (pass) values(aes_encrypt('your_pass','your_key'))

    دستور رمزگشایی

    select cast(AES_DECRYPT(pass,'your_key') as char) from users
    با سلام

    خیلی ممنون
    از همه تون ممنونم دوستان واقعا که کم نذاشتید و توضیحات لازم رو دادید براتون آرزوی موفقیت دارم.

  10. #10

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط Nevercom مشاهده تاپیک
    الگوی مناسبتر، استفاده از توکن هست.

    در حالت معمول، کاربر یکبار لاگین می‌کنه و پس از اون درخواست هایی رو به سمت سرور ارسال می کنه، اگر برای احراز هویت در همه‌ی درخواست ها یوزرنیم و پسورد رو ارسال کنید، معنیش این هست که این اطلاعات کاربر رو باید جایی ذخیره کنید (تا مجبور نباشه هربار پسوردش رو وارد کنه، مثلاً پس از لاگین برای ثبت نظر هم پسوردش رو وارد کنه)

    در عوض هنگام لاگین یک توکن براش تولید می کنید و اون توکن رو در پاسخ ارسال می کنید، این توکن یک رشته‌ی یکتاست که به اون یوزر اختصاص داده شده (تا زمانی که اعتبارش از بین بره)، و یوزر پس از لاگین همراه همه‌ی درخواست ها باید این توکن رو ارسال کنه.

    وقتی هم قراره عملیاتی انجام بشه، اطلاعات کاربر از توکن استخراج میشه و عملیات برای اون یوزر خاص صورت می گیره. یعنی اگر فرض کنیم یوزر بخواد اطلاعاتی رو حذف کنه، تنها باید بتونه اطلاعاتی که مربوط به خودش هست رو حذف کنه. پس سمت سرور درخواست رو که دریافت کردید، اول چک می کنید که توکن موجود باشه و معتبر هم باشه. بعد از توکن User ID رو استخراج می کنید و پس از اون چک می کنید که اطلاعات مورد درخواست برای حذف شدن، آیا مال خود اون یوزر هست یا خیر (تا جلوی این رو بگیرید که یک کاربر با داشتن توکن معتبر، بتونه اطلاعات دیگران رو تغییر بده).

    استفاده از SSL خیلی مهم هست، بخصوص که با وجود سرویس هایی مثل Let's Encrypt، می تونید به رایگان گواهینامه SSL دریافت کنید و هیچ هزینه ای براتون نداره.

    با پنهان سازی یا مبهم سازی آدرس های وب سرویس مخالفم، چون فقط دارید صورت مسئله رو پاک می کنید. یک Public API باید خودش امن باشه، و با مخفی کردن این آدرس ها در کلاینت، یک توهمی از امنیت براتون ایجاد میشه که شاید باعث بشه در دیگر بخش ها کم‌کاری بشه.

    موارد دیگری هم هستن که برای اینکه اطلاعاتتون تخلیه نشه، لازم هستن. مثلن فرض کنیم در برنامه قرار باشه اطلاعات یک محصول خاص نمایش داده بشه، در این حالت احتمالن ID محصول ارسال میشه تا اطلاعات اون محصول رو دریافت کنید، اگر این ID یک شناسه عددی باشه، یه نفر می تونه با توکن معتبر، یک اسکریپت بنویسه که اعداد متفاوت رو به ترتیب ارسال کنه و دیتابیس شما رو تخلیه کنه. برای جلوگیری از این مشکل، ID ها باید از جنس دیگری باشن، مثلن UUID یا حتی یک String.

    اینها موارد ابتدایی هستن و بقیه‌ی موارد بستگی به ساختار پروژه و نیازمندی های اون داره.
    سلام
    ببخشید من با بحث احراز هویت با توکن خیلی کار نکردم و دقیقا نمیدونم که چطوری میشه هنگام لاگین برای یوزر توکن تولیدکرد و برای هر دفعه که درخواست میفرستیم چطور اعتبار سنجی کنیم خیلی ممنون میشم یه مثال ساده همراه با نمونه کد ارائه کنید.
    پیشاپیش ممنون

  11. #11
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    خود توکن چیز عجیب و پیچیده ای نیست.

    ایده این هست که کاربر برای انچام برخی کارها قبلش باید لاگین کرده باشه، و پس از لاگین و در درخواست های بعدی تشحیص بدیم که این همون یوزر هست که لاگین کرده.
    در این حالت پس از لاگین یک رشته‌ی طولانی و غیرقابل حدس زدن تولید می کنیم و اون رو جایی (مثلاً در دیتابیس) ذخیره می کنیم، همچنین در هنگام ذخیره سایر اطلاعات موردنیاز رو هم ذخیره می کنیم که در حداقل اون کد کاربری هست، یعنی در هر رکورد حداقل یک توکن و یک کد کاربری داریم. در این حالت با دریافت توکن می تونیم کد کاربر صاحب توکن رو پیدا کنیم. اطلاعات بیشتر مثلاً می تونه تاریخ اعتبار باشه، که کنترل کنیم هر توکن مثلاً ۲ روز اعتبار داشته باشه.

    حالا هروقت درخواستی دریافت کنیم که نیاز به احراز هویت داشته باشه، توقع داریم که همراه درخواست توکن هم ارسال بشه، بعد از اون باید چک کنیم که اون توکن واقعاً در سیستم ما وجود داره و مثلاً تاریخ انقضاش هم هنوز نرسیده.

    با این کار ما یک شناسه داریم که فقط برای ما معنا داره و با استفاده از اون نمیشه به کد کاربری و رمز عبور پی برد، و همون کارکرد یک سیستم احراز هویت رو داره.

    در مورد توکن در این تاپیک بیشتر توضیح دادم: ذخیره حالت لاگین در سرور - ضروری

  12. #12

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    به نظر من برای افزایش امنیت پروژه هاتون از فریم ورک ها استفاده کنید هم راحت تره هم سریع تر هم امن تر

  13. #13

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط Nevercom مشاهده تاپیک
    خود توکن چیز عجیب و پیچیده ای نیست.

    ایده این هست که کاربر برای انچام برخی کارها قبلش باید لاگین کرده باشه، و پس از لاگین و در درخواست های بعدی تشحیص بدیم که این همون یوزر هست که لاگین کرده.
    در این حالت پس از لاگین یک رشته‌ی طولانی و غیرقابل حدس زدن تولید می کنیم و اون رو جایی (مثلاً در دیتابیس) ذخیره می کنیم، همچنین در هنگام ذخیره سایر اطلاعات موردنیاز رو هم ذخیره می کنیم که در حداقل اون کد کاربری هست، یعنی در هر رکورد حداقل یک توکن و یک کد کاربری داریم. در این حالت با دریافت توکن می تونیم کد کاربر صاحب توکن رو پیدا کنیم. اطلاعات بیشتر مثلاً می تونه تاریخ اعتبار باشه، که کنترل کنیم هر توکن مثلاً ۲ روز اعتبار داشته باشه.

    حالا هروقت درخواستی دریافت کنیم که نیاز به احراز هویت داشته باشه، توقع داریم که همراه درخواست توکن هم ارسال بشه، بعد از اون باید چک کنیم که اون توکن واقعاً در سیستم ما وجود داره و مثلاً تاریخ انقضاش هم هنوز نرسیده.

    با این کار ما یک شناسه داریم که فقط برای ما معنا داره و با استفاده از اون نمیشه به کد کاربری و رمز عبور پی برد، و همون کارکرد یک سیستم احراز هویت رو داره.

    در مورد توکن در این تاپیک بیشتر توضیح دادم: ذخیره حالت لاگین در سرور - ضروری
    با سلام

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

    در این مورد چه نظری دارید؟
    پیشاپیش ممنون

  14. #14
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    خب احراز هویت فقط تا این حد بهتون کمک می کنه که جلوی دسترسی غیرمجاز رو بگیرید و فعالیت هر کاربر رو محدود به اطلاعات خودش بکنید (درصورت نیاز). هرچیزی فراتر از این رو باید بنا به نیاز پروژه ایجاد کنید

    مثلاً سیستم Permission به شما کمک می کنه که دسترسی کاربرها رو با دقت بیشتری کنترل کنید، مثلاً به یک یوزر خاص اجازه بدید که کامنت ها رو حذف کنه، اما دسترسی مدیریتی بیشتری نداشته باشه.

    بعد از اون مثلاً در مثالی که زدید، می تونید محدودیت در تعداد درخواست ها در دقیقه بزارید، مثلاً منطقی نیست که هر کاربر در هر ۳ تانیه بیشتر از یک لایک رو انجام بده، پس در دقیقه ۲۰ تا لایک رو بهش مجوز می‌دید. حتی می تونید محدودیت رو در تعداد درخواست ها، در سطح وب سرویس قرار بدید، مثلاً بگیر هر IP مجاز به ارسال ۶۰ درخواست در دقیقه هست و نه بیشتر.

    یا بعنوان یک لایه امنیتی دیگه من از Fail2Ban در سرور استفاده می کنیم و به شکلی کانفیگ کردم که اگر در ۱۰ دقیقه، بیشتر از ۳ بار پسورد اشتباه بزنه، تا ۱۰ دقیقه بعدش اون IP رو Ban کنه.

    همونطور که گفتم، هیچ قانونی وجود نداره که برای همه ی شرایط جواب بده، باید برای هر پروژه جداگانه تصمیم گیری کنید. اینهایی که قبلتر توضیح دادم پایه های سیستم امنیتی محسوب میشه و به خودی خود امنیت چندانی فراهم نمی کنه

  15. #15

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط Nevercom مشاهده تاپیک
    خب احراز هویت فقط تا این حد بهتون کمک می کنه که جلوی دسترسی غیرمجاز رو بگیرید و فعالیت هر کاربر رو محدود به اطلاعات خودش بکنید (درصورت نیاز). هرچیزی فراتر از این رو باید بنا به نیاز پروژه ایجاد کنید

    مثلاً سیستم Permission به شما کمک می کنه که دسترسی کاربرها رو با دقت بیشتری کنترل کنید، مثلاً به یک یوزر خاص اجازه بدید که کامنت ها رو حذف کنه، اما دسترسی مدیریتی بیشتری نداشته باشه.

    بعد از اون مثلاً در مثالی که زدید، می تونید محدودیت در تعداد درخواست ها در دقیقه بزارید، مثلاً منطقی نیست که هر کاربر در هر ۳ تانیه بیشتر از یک لایک رو انجام بده، پس در دقیقه ۲۰ تا لایک رو بهش مجوز می‌دید. حتی می تونید محدودیت رو در تعداد درخواست ها، در سطح وب سرویس قرار بدید، مثلاً بگیر هر IP مجاز به ارسال ۶۰ درخواست در دقیقه هست و نه بیشتر.

    یا بعنوان یک لایه امنیتی دیگه من از Fail2Ban در سرور استفاده می کنیم و به شکلی کانفیگ کردم که اگر در ۱۰ دقیقه، بیشتر از ۳ بار پسورد اشتباه بزنه، تا ۱۰ دقیقه بعدش اون IP رو Ban کنه.

    همونطور که گفتم، هیچ قانونی وجود نداره که برای همه ی شرایط جواب بده، باید برای هر پروژه جداگانه تصمیم گیری کنید. اینهایی که قبلتر توضیح دادم پایه های سیستم امنیتی محسوب میشه و به خودی خود امنیت چندانی فراهم نمی کنه
    با سلام

    بله حق با شماست میشه محدودیت هایی گذاشت.
    چطور میشه IP رو به دست آورد؟
    میشه خواهش کنم در مورد Fail2Ban و کار کردن باهاش بیشتر توضیح بدید.
    پیشاپیش ممنون

  16. #16
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    35
    پست
    1,118

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    Fail2Ban ابزاری هست که روی سرور نصب میشه (نمی دونم نسخه ویندوز هم داره یا نه) و کارکردش به این شکل هست که تمامی لاگ های سرور رو می‌خونه و در بین اونها دنبال الگوی خاصی می گرده، اگر پیداشون کرد با قواعدی که مشخص کردیم بررسیشون می کنه و مثلن اگر تعیین کردیم در ۱۰ دقیقه باید بیشتر از ۳ تا ازشون پیدا نکنه، اگر بیشتر از اون تعداد شد، به مدتی که تعیین کردیم اون IP رو به قایروال معرفی می کنه و اون IP بن (Ban) میشه و درخواستش به وب سرور نمیرسه. بعد از زمان مشخص اون IP رو از بلک لیست خارح می کنه.

    بصورت پیشفرض تمام لاگ های موجود در دایرکتوری /var/log/ رو بررسی می کنه، می تونید لاگ های خاصی رو بهش اضافه کنید یا اینکه بگید بررسیشون نکنه. در حالت پیشفرض لاگ های مربوط به SSH رو بررسی می کنه و اگر چندبار تلاش ناموفق از یک IP برای ورود از طریق SSH صورت بگیره، اون رو بلاک می کنه.

    حالا شما می تونید پس از ورود ناموفق در وب اپلیکیشن، یک عبارت خاص رو لاگ کنید و الگویی به Fail2Ban معرفی کنید که بتونه اون عبارت رو شناسایی کنه و IP ازش استخراج کنه و بنش کنه. درحالت ساده با لاگ کردن یه عبارت توسط دستور error_log در PHP و دستورهای مشابه در سایر زبان ها، عبارتی رو در فایل لاگ وب سرور لاگ کنید که با اینکار IP هم در اون لاگ ذخیره میشه.

    این مقاله خوبی در این زمینه هست: https://www.digitalocean.com/communi...n-ubuntu-14-04

  17. #17

    نقل قول: ایجاد ارتباط امن بین برنامه و سرور

    نقل قول نوشته شده توسط Nevercom مشاهده تاپیک
    Fail2Ban ابزاری هست که روی سرور نصب میشه (نمی دونم نسخه ویندوز هم داره یا نه) و کارکردش به این شکل هست که تمامی لاگ های سرور رو می‌خونه و در بین اونها دنبال الگوی خاصی می گرده، اگر پیداشون کرد با قواعدی که مشخص کردیم بررسیشون می کنه و مثلن اگر تعیین کردیم در ۱۰ دقیقه باید بیشتر از ۳ تا ازشون پیدا نکنه، اگر بیشتر از اون تعداد شد، به مدتی که تعیین کردیم اون IP رو به قایروال معرفی می کنه و اون IP بن (Ban) میشه و درخواستش به وب سرور نمیرسه. بعد از زمان مشخص اون IP رو از بلک لیست خارح می کنه.

    بصورت پیشفرض تمام لاگ های موجود در دایرکتوری /var/log/ رو بررسی می کنه، می تونید لاگ های خاصی رو بهش اضافه کنید یا اینکه بگید بررسیشون نکنه. در حالت پیشفرض لاگ های مربوط به SSH رو بررسی می کنه و اگر چندبار تلاش ناموفق از یک IP برای ورود از طریق SSH صورت بگیره، اون رو بلاک می کنه.

    حالا شما می تونید پس از ورود ناموفق در وب اپلیکیشن، یک عبارت خاص رو لاگ کنید و الگویی به Fail2Ban معرفی کنید که بتونه اون عبارت رو شناسایی کنه و IP ازش استخراج کنه و بنش کنه. درحالت ساده با لاگ کردن یه عبارت توسط دستور error_log در PHP و دستورهای مشابه در سایر زبان ها، عبارتی رو در فایل لاگ وب سرور لاگ کنید که با اینکار IP هم در اون لاگ ذخیره میشه.

    این مقاله خوبی در این زمینه هست: https://www.digitalocean.com/communi...n-ubuntu-14-04
    با سلام

    مفید بود خیلی چیزا یاد گرفتم.
    ممنون از شما

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

  1. سوال: ایجاد ارتباط با یک برنامه تحت وب
    نوشته شده توسط mtnam1372 در بخش C#‎‎
    پاسخ: 8
    آخرین پست: دوشنبه 26 خرداد 1393, 16:17 عصر
  2. پاسخ: 0
    آخرین پست: شنبه 24 خرداد 1393, 18:51 عصر
  3. سوال: ارتباط امن بین کلاینت و سرور
    نوشته شده توسط farzadny در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 0
    آخرین پست: چهارشنبه 12 آبان 1389, 14:23 عصر
  4. ایجاد ارتباط با یک برنامه دیگر
    نوشته شده توسط mohammad59mt در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 21 دی 1388, 21:39 عصر
  5. سوال: ارتباط امن بین کلاینت و سرور
    نوشته شده توسط hmm در بخش SQL Server
    پاسخ: 1
    آخرین پست: سه شنبه 03 دی 1387, 12:14 عصر

برچسب های این تاپیک

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

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