ورود

View Full Version : هک شدن دیتابیس



maryam_jamshid
سه شنبه 29 مرداد 1387, 09:22 صبح
من یه دیتا بیس دارم که مدام هک میشه ، یعنی در داخل فیلدای جداولم یه script قرار داده میشه که باعث میشه صفحاتی رو که از این جداول میخونه رو به یه سایت پر از ویروس هدایت کنه.
برای حل این مشکل باید چکار کنم؟؟؟

mannai29
سه شنبه 29 مرداد 1387, 14:10 عصر
میتونی با گذاشتن constraint برای فیلدهات محدودیت بذاری ، (در design جدول) یا با trigger ، درج هاتو کنترل کنی..

mehdi.mousavi
سه شنبه 29 مرداد 1387, 16:22 عصر
من یه دیتا بیس دارم که مدام هک میشه ، یعنی در داخل فیلدای جداولم یه script قرار داده میشه که باعث میشه صفحاتی رو که از این جداول میخونه رو به یه سایت پر از ویروس هدایت کنه. برای حل این مشکل باید چکار کنم؟؟؟

سلام.
متاسفانه شما از Dynamic SQL ها در وب سایتتون استفاده کردین، و همین کافیه تا سایت رو بشه به زانو در آورد. جزییات این نوع حمله (http://www.simonwhatley.co.uk/tag/xss) رو (XSS) میتونید در این سایت مطالعه کنید. اما برای رفع مشکل، باید تک تک صفحاتی که طراحی شده رو بررسی کنید و ببینید در کدامیک از اونها از Dynamic SQL ها استفاده کردین. پیدا کردن این مساله (بسته به سایت) ممکنه هفته ها طول بکشه... اما نگران نباشید. یه Option دیگه هم دارید. میتونید از DotDefender (http://www.applicure.com/)استفاده کنید تا کلیه درخواستهای مشکوک به Web Server بصورت خودکار بلاک بشه...

البته، من راه اول رو پیشنهاد میکنم.

maryam_jamshid
چهارشنبه 30 مرداد 1387, 08:39 صبح
آقا مهدی میشه دوروشتون رو بیشتر توضیح بدید که چطوری ازشون استفاده کنم؟
آقا manni چطوری از constranit میتونم استفاده کنم یا تریگر؟؟

mehdi.mousavi
چهارشنبه 30 مرداد 1387, 10:51 صبح
آقا مهدی میشه دوروشتون رو بیشتر توضیح بدید که چطوری ازشون استفاده کنم؟ آقا manni چطوری از constranit میتونم استفاده کنم یا تریگر؟؟

سلام.
کافیه تا از Stored Procedure ها استفاده کنید و از Dynamic SQL ها پرهیز کنید.

پاورقی: در مورد Constraint هم باید بگم فراموشش کنید. روشی که پیشنهاد دادن روش صحیحی برای مقابله با این مساله نیست. شما باید مساله رو از بیخ و بن حل کنید!

mannai29
چهارشنبه 30 مرداد 1387, 13:58 عصر
سلام.
کافیه تا از Stored Procedure ها استفاده کنید و از Dynamic SQL ها پرهیز کنید.

پاورقی: در مورد Constraint هم باید بگم فراموشش کنید. روشی که پیشنهاد دادن روش صحیحی برای مقابله با این مساله نیست. شما باید مساله رو از بیخ و بن حل کنید!
نظر آقای مهدی در مورد Dynamic sql درسته ولی ایشون باید توجه داشته باشند که constraint and triggers روشهای خوبی هستند . ولی ما جزئیات فیلدها و انواعشون رو در این مساله نمیدونیم که بگیم آیا این روشها اینجا هم کاربرد دارند یا نه؟
دوم اینکه ما داریم در محیط sql بحث می کنیم . اینها هم روشهای کنترل داده در محیط sql هستند.بنابر این ممکنه نظر شما راه حل این مورد باشه ولی به sql مربوط نمی شه!!
سوم اینکه توضیح در مورد چگونگی استفاده از constraint and triggers در چند جمله مختصر نمی شه اما ساده است! پیشنهاد میکنم به یک منبع مناسب مثل ebook در همین اینترنت مراجعه کنید.

mehdi.mousavi
چهارشنبه 30 مرداد 1387, 15:10 عصر
نظر آقای مهدی در مورد Dynamic sql درسته ولی ایشون باید توجه داشته باشند که constraint and triggers روشهای خوبی هستند . ولی ما جزئیات فیلدها و انواعشون رو در این مساله نمیدونیم که بگیم آیا این روشها اینجا هم کاربرد دارند یا نه؟
دوم اینکه ما داریم در محیط sql بحث می کنیم . اینها هم روشهای کنترل داده در محیط sql هستند.بنابر این ممکنه نظر شما راه حل این مورد باشه ولی به sql مربوط نمی شه!!
سوم اینکه توضیح در مورد چگونگی استفاده از constraint and triggers در چند جمله مختصر نمی شه اما ساده است! پیشنهاد میکنم به یک منبع مناسب مثل ebook در همین اینترنت مراجعه کنید.


سلام.
در اینکه Constraint ها و Trigger ها مفید و به درد بخور هستند، هیچ شکی نیست. دقت کنید، من گفتم برای حل این مشکل مطلقا استفاده از اونها صحیح نیست. برای اینکه خیالتون رو در مورد این مساله راحت کنم، بیایید فرض کنیم یه فیلد TEXT در بانک داریم که کاربرها میتونن اونو با HTML مورد نظر خودشون پر کنن. شما چطوری میخواهید بین داده های ورودی HTML وارد شده توسط کاربر Authorized شده و داده های HTML ای که توسط Pattern های متفاوتی در حال Inject شدن به بانک هست، تفاوت قائل بشید؟

موکدا تکرار میکنم با Constraint ها و Trigger ها نمیتونید در این مورد کاری از پیش ببرید. چون Pattern ای که Inject میشه، مدام در حال تغییره، کدهای HTML داره و مهمترین مساله شما هیچ معیاری برای جداسازی داده های یک کاربر مجاز و دیتاهایی که یک مهاجم با بانک ارسال میکنه، ندارید.

پاورقی 1: قانون اول امنیت در نرم افزار ها میگه هیچوقت دنبال این نباشید که کاربر اجازه نداره چه چیزهایی وارد کنه، بلکه باید ببینید کاربر اجازه داره چی وارد کنه و هر چی غیر اون رو باید غیر مجاز تلقی کرد. چون شما هرگز نمیتونید کلیه Pattern هایی که ممکنه برای شما مشکل ایجاد کنه رو شناسایی کنید، اما عموما میتونید تعیین کنید که چه Pattern ای باید توسط کاربر وارد بشه و میشه اونو مجاز تلقی کرد. بعنوان مثال شما Pattern ای تحت عنوان ;DECLARE رو غیر مجاز میدونید. اما مهاجم اقدام به حمله با این Pattern میکنه: ;;DECLARE اینجا شما موفق خواهید بود، یا مهاجم؟

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

پاورقی 3: با اعمال تغییر کوچکی در Pattern ای که در حال Inject شدن هست، میشه کاری کرد که کلیه اطلاعات بانک حتی پاک بشه. آیا این رو هم میخواهید با Trigger و Constraint کنترل کنید؟

ASKaffash
چهارشنبه 30 مرداد 1387, 17:07 عصر
سلام
این لینک را نگاه کنید شما دارید SQLInjection میخورید:
http://www.developercenter.ir/Forum/showthread.php?t=1643

mannai29
چهارشنبه 30 مرداد 1387, 17:32 عصر
من فکر میکنم اگر یکبار دیگه جوابهای آخر من و آقا مهدی رو بخونید با هم مطابقت داشته باشه و من تضادی نمی بینم ! :قلب: