به نام خدا ......
پایگاه داده مجموعه ای منظم و سازمان یافته از دادهه (اطلاعات) ذخیره شده الکترونیکی از سیستم رایانه ای است. در جایی که پایگاه دادهها پیچیدهتر هستند، آنها اغلب با استفاده از تکنیکهای طراحی رسمی و مدلسازی توسعه مییابند .
( تکنیک های مدلسازی داده یا Data modelling : یک مدل داده معمولاً شبیه دیاگرامی است که بوسیله توصیفهای متنی پشتیبانی میشود. این مدل اجزائی را که برای کسب و کار مهم هستند (مانند افراد، مکانها، چیزها و تبادلات کسب و کار)، ویژگیهای مرتبط با آنها و روابط مهم میان آنها را بصورت تصویری به نمایش می گذارد. مدلهای داده بطور گسترده ای هم در استخراج و تحلیل و طراحی الزامات و هم برای پشتیبانی از اجرا و بهبود مستمر بکار گرفته میشوند. )
به طور کلی همه دانستهها، آگاهیها، داشتهها، آمارها، شناسهها، پیشینه ها و پنداشتهها داده که به انگلیسی معادل کلمه Data هست محسوب میشود.
به اعداد، حروف و علائم که جهت درک و فهم مشترک از انسانها یا رایانه سرچشمه میگیرند داده میگویند
( مثلا اسم یک شخص یک داده محسوب می شود )
دادهها معمولاً از سوی انسانها به صورت حروف، اعداد، علائم و در رایانه به صورت نمادهایی (همان رمزهای صفر و یک) قراردادی ارائه میشوند.
انواع پایگاه داده (Database)
پایگاه داده رابطه ای :
پایگاه دادههای رابطهای از دهه ۱۹۷۰ تا به امروز مورد استفاده قرار میگیرند. پایگاه داده رابطهای روشی است که در آن دادهها در چندین جدول مرتبط ذخیره میشوند. درون این جدولها، دادهها در سطرها و ستونهای مختلف قرار دارند. سیستم مدیریت پایگاه داده رابطهای (RDBMS) یک برنامه است که به واسطه آن، امکان ایجاد، بهروزرسانی و مدیریت پایگاه داده رابطهای فراهم میشود.
زبان پرس و جو ساختاریافته (Structured Query Language | SQL) رایج ترین زبان برای خواندن، ایجاد، بهروزرسانی و حذف دادهها است. پایگاه داده رابطهای بسیار قابل اعتماد است و در آن، از استاندارد ACID پیروی میشود. منظور از ACID مجموعهای از استانداردها است که با کمک آنها، تراکنشهای پایگاه داده قابلاعتماد خواهند شد. واژه ACID از مفاهیمی همچون اتمی بودن (Atomicity)، سازگاری (Consistency)، جداسازی (Isolation) و دوام (Durability) برگرفته شده است.
از جمله مثالهای پایگاه داده رابطهای میتوان به Microsoft SQL Server، پایگاه داده اوراکل، MySQL، پایگاه داده PostgreSQL و IBM Db2 اشاره کرد .
پایگاه داده NoSQL :
پایگاه های داده NoSQL داده ها را در اسناد به جای جداول رابطه ای ذخیره می کنند .
بر این اساس، ما آنها را به عنوان "نه تنها SQL" طبقه بندی می کنیم و آنها را بر اساس انواع مدل های داده انعطاف پذیر تقسیم می کنیم .
انواع پایگاههای داده NoSQL شامل پایگاههای داده اسناد خالص، فروشگاههای ارزش کلیدی، پایگاههای داده با ستون گسترده است . و پایگاه های داده گراف پایگاه های داده NoSQL از ابتدا برای ذخیره و پردازش حجم وسیعی از داده ها در مقیاس های خیلی بزرگ ساخته شده اند و تعداد رو به رشدی از مشاغل مدرن را پشتیبانی می کنند.
در مدل رابطهای دادهها، زبان پرسمان ساختیافته (به انگلیسی: Structured Query Language) با کوتهنوشت SQL نوعی زبان خاص دامنه در برنامهنویسی است که برای مدیریت دادههای نگهداریشده در سیستم مدیریت پایگاهداده رابطهای (RDBMS) یا برای پردازشهای جریانی در سیستم مدیریت جریان داده رابطهای (RDSMS) طراحی شدهاست .
این زبان مخصوصاً برای رسیدگی به داده ساختیافته مفید میباشد (یعنی دادهای که رابطه بین موجودیتها و متغیرها را در خود گنجاندهاست) .
اس کیو ال ( SQL ) دو مزیت اصلی نسبت به رابطهای کاربردی خواندن-نوشتن قدیمی تر مثل ISAM یا VSAM دارد ، اولا SQL مفهوم دسترسی به چندین رکورد با یک دستور منفرد را معرفی کردهاست، و دوما SQL نیاز به تعیین آنکه «چگونه» باید به یک رکورد رسید را حذف نمودهاست .
واژههای کلیدی اسکیوال به گروههای مختلفی تقسیم میگردد، در زیر به برخی از آنها اشاره میکنیم آنهایی که آشنا تر هستند را تنها با یک مثال شرح میدهیم:
مثالی برای دستور های SQL :
با دستور پایین یک یا چند داده را از جدول table_name پیدا میکنیم :
SELECT column1, column2, ...FROM table_name;
با دستور زیر چند داده را به یک سطر از جدول table_name اضافه میکنیم :
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
با دستور زیر یک سطر از جدول table_name را با شرط condition حذف میکنیم :
DELETE FROM table_name WHERE condition;
واژه «امن» یعنی بی گزند و بی آسیب و دارای آرامش. امنیت هم یعنی بی گزندی و بی آسیبی یا حالتی که در آن گزند و خطر و آسیب راه ندارد و آرامش در آن برقرار است.
همانطور که از معنای واژه امنیت پیداست ، ما باید کار هایی انجام دهیم تا اطلاعات یا داده های ما که به منزله با ارزش ترین سرمایه های هر سازمانی تلقی میشود در امان بماند .
اما برای اینکار ما نیاز داریم تا اول راه های نفوذ به پایگاه داده و روش های سرقت داده ها را بشناسیم .
ما علاوه بر بستن راه نفوذ گران باید به دنبال راه هایی برای پشتیبانی گیری از داده های خود باشیم
زیرا سخت افزار و وسیله برقی هر لحظه احتمال خراب شدن و نابودی را دارد که با نابودی شرکت یا سازمان برابر است .
چرا امنیت پایگاه داده مهم است ؟
امینت پایگاه داده عبارت است از :
برخی از روش های نفوذ به اپلیکیشن و دیتابیس (تهدیدات دیتابیس):
فیشینگ نوعی حمله مهندسی اجتماعی است که عموماً از طریق ایمیل و با هدف سرقت اطلاعات ورود به سیستم و سایر اطلاعات حساس مانند اطلاعات کارت اعتباری برای سرقت هویت افراد انجام می شود.
یکی از ویژگیهای قابل توجه فیشینگ، عنصر سورپرایز است! این ایمیلها زمانی دریافت می شوند که قربانی انتظارش را ندارد. مهاجمان می توانند ایمیل ها را زمانبندی کنند تا قربانیان در شرایط حواس پرتی با چیزهای دیگر مانند کار، آنها را دریافت کنند. تمرکز و توجه دائمی به ایمیل های مشکوک غیرممکن است و کلاهبرداران این را خوب می دانند.
نفوذگر میتواند با سرقت اطلاعات ادمین یا مدیر سازمان وارد دیتابیس شود و اطلاعات را سرقت کند .
حملات DOSو DDOSیکی از خطرناک ترین و جدیدترین حملاتی است که در بستر اینترنت انجام میشود. DDOS مخفف چیست؟ کلمه DDOSمخفف عبارت Distributed Denial of Service است و هدف از این حملات خراب کردن سرویس مورد نظر نیست بلکه شبکه و سرور مورد نظر را وادار به ناتوانی در ارائه سرویس عادی با هدف قرار دادن پهنای باند شبکه یا اتصال پذیری مینماید. این حملات با ارسال بستههای داده به قربانی انجام میشود که شبکه یا ظرفیت پردازشی قربانی را غرق در بستههای اطلاعاتی میکند و مانع دستیابی کاربران و مشتریان به سرویس میشود.
حمله SQL Injection روشی است که به هکر اجازه میدهد از طریق حفرههای امنیتی در لایه دیتابیس یک نرمافزار نفوذ کند. معمولن این نوع حمله روی صفحات وب و از طریق تزریق کدهای مخرب به پایگاه داده رخ میدهد. بهعنوان مثال هکر میتواند در زمان پر کردن فیلدهای یک فرم روی یک وبسایت، به جای نام، از یک Query استفاده و آن را ثبت و به سمت SQL ارسال کند تا بتواند پاسخ مورد نظرش را از دیتابیس دریافت و دسترسیهای غیرمجاز را به دادههای موجود بهدست بیاورد.
اولین قدم در حمله که یافتن وبسایت آسیبپذیر است، بیشترین زمان را از هکر میگیرد. از زمانی که این حفره امنیتی روی پایگاه داده SQL شناسایی شده است، بیشتر وبسایتها تمهیداتی برای مصون نگهداشتن خود در مقابل این حملهی سایبری در نظر گرفتهاند که کار مهاجم را دشوارتر کرده است.
حمله XSS یا Cross Site Scripting یکی از رایجترین حملههای سایبری تحتوب است که در میان انواع حملات وب در جایگاه بالایی قرار دارد. مخفف این عبارت CSS است اما برای آنکه با زبان برنامهنویسی اشتباه گرفته نشود به آن XSS گویند. روش حمله از طریق تزریق کدهای مخرب به صفحهی وب قربانی و اجرای این کدهای جاوا اسکریپت توسط مرورگر است که در نهایت منجر به دسترسی غیرمجاز به اطلاعاتی مثل مشخصات کاربری یا اطلاعات حساب قربانی خواهد شد.
پرکاربردترین روش نفوذ، افزودن کدهای مخرب به انتهای URL است که با کلیک بر روی لینکهای مختلف توسط کاربر اجرا میشود. همچنین هکر با دسترسی به دیتابیس وبسایت و قرار دادن اسکریپت، امکان آلودهکردن صفحهی وب را در مقیاسی بزرگتر دارد.
حمله Brute Force تلاشی برای شکستن رمز عبور، یافتن نام کاربری، یافتن یک صفحه وب پنهان یا یافتن کلید مورد استفاده برای رمزگذاری پیام با استفاده از یک روش آزمون و خطا و بررسی تمام حالات ممکن است. این روش به میزان زیادی از امیدواری نیز نیاز دارد تا در نهایت رمز عبور را بهدرستی حدس زده شود. Brute force حملهای قدیمی اما همچنان محبوب و موثر است.
نوعی حمله هکری است که طی آن نفوذگر دسترسی غیرمجاز به اطلاعاتی محرمانه به شیوه ای تسهیل نشده توسط کاربر و یا به session های غیرایمن دست پیدا می کند.
حمله SQL Injection یا تزریق کد اس کیو ال از معروف ترین روش های تست نفوز به وب اپلیکیشن ها است :
هدف از انجام این نوع تست نفوذ ، دستیابی مستقیم به رکورد های داخل پایگاه داده است . برای اینکه عملیات SQL Injection به درستی عمل کند، بدیهی است که اولین گام، تشخیص آن است. برای انجام ایـن کـار، نفوذگر ابتدا باید بعضی انواع از نشانه هایی که دلالت بر وجود خطاها در سیستم است، ایجاد کند . اگرچه، پیام های خطا خودشان نمایش داده نمی شوند، application باید توانایی جدا کردن صحیح (یک درخواست صحیح) را از باطل (یک درخواست غیرمعتبر) داشته باشد و نفوذگر به راحتی می آموزد که چطور این آثار را بشناسد، خطاها را پیدا کند و تشخیص دهد آیا آنها به SQL مربوط می باشند یا خیر .
بحث Error handling یا رسیدگی به خطاها باعث می شود که خیلی از خطا های نرم افزار با روشی که برنامه نویس تعین میکند نمایش داده شود و این امر باعث میشود نفوذگر فرایند سخت تری را در پیش بگیرد .
• مشخص کردن اطالعاتی که نیاز به محافظت دارند
• دسته بندی اطالعات براساس اهمیت آن ها
• شناسایی تهدیدات
• ارزیابی ریسک
• تعریف نقش های کاربران پایگاه داده
• تعریف حساب های کاربرای بر اساس نقش ها وکاربران
• تخصیص مجوزهای دسترسی به آنها با توجه به نیاز آنها
• بازبینی نقش ها و مجوزهای دسترسی به طور مداوم برای اطمینان از مناسب بودن آنها با توجه به شرایط فعلی پس از اعمال هر گونه تغییر در سازمان
•تعریف خط مشی برای ثبت فعالیت ها
• مشخص کردن هدف از ثبت اطالعات
• تعریف خط مشی برای ثبت فعالیت ها اطالعات سیستم عامل، برنامه کاربردی، پایگاه داده
• مشخص کردن نوع دسترسی ها و شرایط رخ دادن آن ها زمان، اطالعات درخواست شده، ورود به سیستم
• مشخص کردن جزئیات اطالعات ثبت شده زمان، شناسه ی کاربر، آدرس IP
• مشخص کردن نحوه ی نگهداری اطالعات ثبت شده و کنترل دسترسی به آن ها
امنیت پایگاه داده به متد های بسیار زیاد و مختلفی بستگی دارد که باید همه آنها به درستی بررسی ، مطالعه و پیاده سازی شوند .
اما با این حال اگر تمام کار ها به درستی پیش برود ، باز هم یک شعار وجود دارد که می گوید ، امنیت هیچوقت صد در صد نیست .
wikipedia.org
couchbase.com
w3schools.com
faradars.org
مرکز آپا دانشگاه یزد : cert.yazd.ac.ir
مرکز آپا دانشگاه صنعتی شریف : cert.sharif.edu