برای سخت شدن و ایمن نگه داشتن ظاهر وب خود ، اقدامات در حال توسعه را انجام دهید.

مشاغل کوچک ، بانک ها و بسیاری از صنایع به برنامه های وب بستگی دارند. از آنجا که ساختن یک برنامه وب ، بسیار مهم است که حتماً پروتکل هایی برای بررسی آسیب پذیری ها داشته باشید زیرا این تحولات برای جلوگیری از نقض امنیتی ، نشت داده ها و مسائل مالی پیشگیری می شود..

خطرناکترین حملات وب حملات رخ داده در سمت سرور است که داده ها در آن ذخیره و تجزیه و تحلیل می شوند.

Backend چیست؟?

یک برنامه وب به دو بخش Frontend و Backend تقسیم می شود.

  • جلوی آن طرف مشتری است ، این بخشی است که کاربر با آن تعامل دارد. به طور معمول ، با HTML ، CSS و Javascript ساخته شده است.
  • باطن سمت سرور است. این اساساً نحوه عملکرد برنامه ، منطق کسب و کار ، تغییرات و به روز رسانی ها است. برخی از پشته های محبوب فن آوری سمت سرور شامل PHP ، NodeJS ، Java ، Ruby ، ​​C ، Python ، پایگاه داده ، امنیت (تأیید هویت ، کنترل دسترسی و غیره) ، ساختار و مدیریت محتوا هستند..

یادآوری کمی قبل از شروع – احراز هویت ، کنترل دسترسی & مدیریت جلسه

برای ما معمول است که شرایط را اشتباه بگیریم. بنابراین اجازه دهید سریع آن را روشن کنیم:

  • تأیید هویت مربوط به اثبات هویت کاربر است (به عنوان مثال ، گذرواژه ، نام کاربری ، امنیت سوالات ، اثر انگشت)
  • کنترل دسترسی مربوط به دسترسی کاربر به برنامه است. این سیاستی را اعمال می کند که کاربران نمی توانند خارج از مجوزهای مورد نظر خود عمل کنند.
  • مدیریت جلسه مربوط به پاسخ و درخواست معاملات مرتبط با همان کاربر است. این یک مکانیزم مبادله ای است که پس از تأیید اعتبار موفق ، بین کاربر و برنامه استفاده می شود.

بیایید موارد زیر را برای امنیت بهتر وب پشتیبان بررسی کنیم.

نقص تزریق

از سال 2010 ، OSWAP تزریق را به عنوان خطرناکترین شماره برنامه کاربردی وب طبقه بندی کرد.

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

uname = درخواست.POST [‘نام کاربری’]
passwd = درخواست.POST [‘گذرواژه’]
sql = "شناسه را از کاربران انتخاب کنید که نام کاربری = ‘" + اسم شما + "’AND رمز عبور =’" + گذشت + "”"
database.execute (sql)

یک مهاجم اکنون می تواند با استفاده از تزریق SQL ، رمز عبور را دستکاری کند ، به عنوان مثال با وارد کردن گذرواژه ‘OR 1 = ‘1 ، که منجر به جستجوی زیر SQL می شود:

sql = "شناسه را انتخاب کنید از کاربران WHERE username = ” AND password = ‘password’ OR 1 = ‘1’

با این کار ، مهاجم می تواند به تمام جداول کاربر پایگاه داده دسترسی داشته باشد ، رمز عبور همیشه معتبر است (1 = ‘1). اگر آنها به عنوان یک مدیر وارد شوید ، می توانند هرگونه تغییراتی را که می خواهند ایجاد کنند.

نحوه جلوگیری از آن?

این بسیار است آسان برای جلوگیری از نقص تزریق.

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

و شما همچنین باید موارد زیر را انجام دهید.

  • استفاده از ORM ها (ابزار نقشه برداری رابطه ای شیء).
  • فرار از همه ورودی ها. یک قسمت تاریخ هرگز نباید چیز دیگری را به جز تاریخ ها در آنها ذخیره کند.
  • داده های خود را جدا کنید تا فقط مواردی که باید از آن مکان دسترسی داشته باشید در آن مکان نگه داشته شود.
  • کدهای خطای مناسب را بنویسید. بانک اطلاعاتی یا باطن خود را خیلی واضح نکنید.

تروی هانت یک دوره درخشان در تزریق SQL گرفت. در صورت علاقه ، ممکن است آن را کشف کنید.

تأیید هویت شکسته

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

تأیید هویت شکسته بیشتر از سه الگوی اتفاق می افتد:

  • موارد اعتبار: جایی که مهاجم لیستی از نامهای کاربری و رمزهای عبور معتبر دارد و می تواند حمله را به صورت خودکار انجام دهد تا اعتبار آن معتبر باشد.
  • حمله Bruteforce: جایی که برنامه رمز عبور ضعیف را برای کاربران یا سرپرست ها مجاز می کند.
  • ربودن جلسه: جایی که برنامه شناسه جلسه ، آدرس اینترنتی را در معرض نمایش قرار می دهد یا بعد از ورود نمی چرخد.

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

نحوه جلوگیری از آن?

قبل از اجرای سیستم احراز هویت ، از خود بپرسید – در صورت به خطر انداختن سیستم احراز هویت ، یک مهاجم چه می تواند بدست آورد?

و طبق پاسخ می توانید موارد زیر را انجام دهید.

  • احراز هویت چند عاملی برای جلوگیری از حملات خودکار.
  • کاربر را تشویق کنید (یا مجبور کنید) یک خط مشی رمز عبور خوب را اتخاذ کند.
  • ورود به سیستم شکست خورده را محدود کنید.
  • از هش الگوریتم کارآمد استفاده کنید. هنگام انتخاب الگوریتم ، حداکثر طول رمز عبور را در نظر بگیرید.
  • سیستم زمان جلسه را تست کنید و مطمئن شوید که نشانه جلسه پس از خروج از اعتبار خارج شود.

کنترل دسترسی شکسته

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

نقص های مشترک کنترل دسترسی عبارتند از:

  • پیکربندی غلط CORS که به دسترسی غیر مجاز API اجازه می دهد.
  • دستکاری ابرداده برای دسترسی مستقیم به روشها.
  • مرور اجباری: مهاجم یک URL را امتحان می کند ، مسیرها را تغییر می دهد (به عنوان مثال ، http: //website.domain/user/ به http: //website.domain/admin) ، و حتی می تواند پرونده های مهم را کشف کند.

نحوه جلوگیری از آن?

بیشتر ، نقص دسترسی شکسته در اثر ناآگاهی در مورد الزامات اساسی مدیریت مؤثر دسترسی مؤثر است.

  • به طور پیش فرض به جز منابع عمومی انکار کنید.
  • لیست فهرست سرور را غیرفعال کنید و مطمئن باشید که پرونده های پشتیبان موجود نیستند.
  • دسترسی محدود به API را برای کاهش تأثیر حملات خودکار ارزیابی کنید.
  • بعد از خروج در قسمت باطن ، علائم JWT را بی اعتبار کنید.

قرار گرفتن در معرض داده ها

همچنین به عنوان نقض اطلاعات گفته می شود ، قرار گرفتن در معرض داده ها یک تهدید سایبری است که مشاغل و مشتریان آنها را تهدید می کند.

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

تأثیر بر تجارت از نظر مالی بزرگ است: طبق این تخلف متوسط ​​می تواند 3.92 میلیون دلار باشد آی بی ام.

نحوه جلوگیری از آن?

به عنوان یک توسعه دهنده باطن ، باید سؤال کنید که اطلاعاتی که به حفاظت نیاز دارند چیست.

و سپس برای جلوگیری از چنین نقص هایی:

  • رمزگذاری داده های حساس: برای داده های موجود در REST ، همه چیز را رمزگذاری کنید. برای داده های در حال انتقال ، حتما از دروازه های ایمن (SSL) استفاده کنید
  • داده هایی را که نیاز به حفاظت بیشتری دارند شناسایی کنید و دسترسی فقط به تعداد محدودی از کاربران مشروع را فقط با اجرای رمزگذاری مبتنی بر کلید محدود کنید..
  • از الگوریتم رمزگذاری ضعیف خودداری کنید: از به روز و استفاده کنید الگوریتم های قوی.
  • یک برنامه تهیه پشتیبان مطمئن داشته باشید.

ناامنی ناامن

Serialization و deserialization مفاهیمی هستند که وقتی داده ها در قالب شی تبدیل می شوند تا ذخیره شوند یا به برنامه دیگری ارسال شوند ، استفاده می شوند. سریال سازی شامل تبدیل داده ها در قالب شیء مانند XML یا JSON است تا بتوان آنها را قابل استفاده کرد. استهلاک کردن فقط روند معکوس است.

اگر کلاس وجود داشته باشد که می تواند برای تغییر رفتار تعدیل شود ، حملات علیه دفع کننده ها می تواند منجر به انکار سرویس ، کنترل دسترسی و حمله به اجرای کد از راه دور (RCE) شود..

مثال دوم 10 مقاله برتر OWASP نمونه خوبی از سریال ساز PHP را ارائه می دهد:

a: 4: {i: 0؛ i: 132؛ i: 1؛ s: 7:"مالوری"؛ i: 2؛ s: 4:"کاربر"؛
i: 3؛ s: 32:"b6a8b3bea87fe0e05022f8f3c88bc960"؛}

این supercookie حاوی اطلاعاتی مانند شناسه کاربر ، سطح کاربر و رمز عبور hashed است.

یک مهاجم برای دستیابی به امتیازات سرپرست می تواند شیء سریالی شده را تغییر دهد:

a: 4: {i: 0؛ i: 1؛ i: 1؛ s: 5:"آلیس"؛ i: 2؛ s: 5:"مدیر"؛
i: 3؛ s: 32:"b6a8b3bea87fe0e05022f8f3c88bc960"؛}

نحوه جلوگیری از آن?

عدم پذیرش اشیاء سریالی از منابع غیر قابل اعتماد بسیار مهم است.

شما هم چنین باید:

  • هرگز به ورودی کاربر اعتماد نکنید.
  • اعتبار سنجی داده ها: اگر برنامه شما به جز یک رشته است ، قبل از استفاده مطمئن شوید که این رشته است
  • برای اطمینان از اینکه داده ها تغییر نکرده اند ، از یک چک استفاده کنید. مفید است که شما می توانید داده ها را بین دو منبع قابل اعتماد ارسال کنید (به عنوان مثال ، ذخیره اطلاعات در سمت مشتری).

سرور XSS

سرور XSS (برنامه نویسی کراس سایت) نوعی تزریق است که یک مهاجم از یک برنامه وب برای ارسال کد مخرب به کاربران مختلف استفاده می کند. این اتفاق می افتد هنگامی که مهاجم برخی از داده های دستکاری شده حاوی کد مخرب را که برنامه ذخیره می کند ، ارسال می کند. این آسیب پذیری از طرف سرور است. مرورگر به سادگی پاسخ را ارائه می دهد.

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

نحوه جلوگیری از آن?

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

  • اعتبار سنجی ورودی: طول ورودی را بررسی کنید ، از تطبیق regex استفاده کنید و فقط مجموعه خاصی از کاراکترها را مجاز می سازد.
  • اعتبار سنجی خروجی: اگر برنامه پاسخ خود را به هر مورد از داده هایی که از برخی کاربر یا شخص ثالث سرچشمه گرفته اند ، کپی کند ، این داده ها باید برای کدگذاری از شخصیت های پتانسیل مخرب کدگذاری شوند..
  • مجاز به محدود کردن HTML: به عنوان مثال ، اگر سیستم وبلاگ کامنت دارید ، فقط استفاده از برچسب های خاص مجاز است. اگر می توانید ، از یک چارچوب مناسب برای نشانه گذاری HTML تهیه شده توسط کاربر استفاده کنید تا سعی کنید مطمئن شوید که هیچ وسیله اجرای JavaScript را ندارد.

نتیجه

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

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me