PDA

View Full Version : سوال: امنیت فایل های dll



aminmorteza
دوشنبه 27 شهریور 1391, 17:04 عصر
سلام دوستان ببخشید من این پست رو قبلا هم مطرح کردم ولی جواب نگرفتم از دوستایی که تویه این زمینه اطلاعاتی دارن ممنون میشم راهنمایی کنند سوالم رو با یه مثال بیان میکنم.ببینید فرض کنید که شخصی یه تابع جمع نوشته و اون رو به صورت یه فایل dll در آورده و من هم به دلیل استفاده مجدد میخوام از این فایل dll تویه سایتم استفاده بکنم و من هیچ اطلاعاتی از سورس کد این فایل dll ندارم فقد میدونم که یه تابع جمع تویه اون هست که من میتونم اون رو تویه سایتم استفاده بکنم حالا سوال من اینه که فرض کنیم اون شخصی که اون فایل dll رو نوشته تویه تابع جمع علاوه بر کدهای که برای جمع نیاز هستش یه سری کد دیگه نوشته باشه که بتونه اطلاعات جداول منو در بیاره و با یه دستور select اطلاعات سایت منو ارسال کنه به سایت خودش (مثلا کدهای که برای sql injection استفاده میشه)میخوام ببینم آیا این کار شدنی هستش و راه جلوگیری از اون چیه؟آیا ما هر فایل dll که میبینم نباید تویه سایتم استفاده بکنیم(مثلا dll تاریخ شمسی و غیره..) اصلا خوده frame work چی؟

amin1softco
دوشنبه 27 شهریور 1391, 18:02 عصر
ببنید بارید مسئله را اینجوری بیان کنیم فرض کنید شما از شرکت ما یک فایل DLL خریداری می کنید ما هم ا اونجایی که با شما مشکل داریم می خواهیم اطلاعات شرکت شما را سرقت کنیم حالا ما چیکار می تونیم انجام بدیم ؟
مثلاً ما میگیم اگر ورودی فلان چیز بود برو فلان خروجی رو بر گردون که مثلاً یک sql injection داخلش تدارک دیدیم که که دیتا بیس شما را اطلاعاتش را
1- برای ما ارسال کنه (مثلاً یک تابع سوکت نوشته باشیم)
2- یک جایی قرار بده روی هاستتون و به ما در خواستی مبنی بر دانلود بده
خوب در اینجا اولین مسئله تزریق کد هست شما آخرش نتیجه کارتون را باید وارد دیتا بیس کنید و اگر از دستورات زیر استفاده کنید :

SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
mycommand.CommandText = “insert into tbl ('name','sum') Values @uname , @usum”
myCommand.Parameters.AddWithValue(“@uname”,txt user);
myCommand.Parameters.AddWithValue(“@usum”,from dllfile);

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

قسمت بعدی اینه که در خروجی کدهای XSS استفاده بشه که اونم شما با encode کردن می تونید جلوش را بگیرید اگر اعتماد ندارید :

SqlDataReader reader = cmd.ExecuteReader(); Response.Write(Httputility.HTMLEncode(reader.GetSt ring(1)));

و خلاصه بلاخره می شه جلوش را در طراحی گرفت. ولی اگر قرار باشه خودش خروجی داشته باشه مثلاً یک قسمتی از سایت دستش باشه نمی دونم چطوری می شه جلوگیری کرد!!
ولی بازم ممکن در روش اول یک کانکشن به یک سرور از پیش تعریف شده داشته باشه و جاسوسی نتایجی که برگشت داده رو بکنه و شما دوست نداشته باشید نتایج را کسی بفهمه . خوب اینجا یکمی از لحاظ امنیتی مشکل داره
و به نظرم باید دست به دامن سیستم های IDS بشید که در اونها امکان بلوکه کردن درخواست ها و تعریف لیست ها ی سفید موجوده شما بهشون میگی این سایت برای sql اجازه دسترسی به این لیست هاست ها را داره و اگر به جای دیگه هوس کرد متصل بشه ایون در خواست را بلوکه کن یا به مدیر هشدار بده!!!
البته این تشکیلات امنیتی خیلی دست و پا گیر است و برای پروژه های واقعاً مهم باید به کار گرفته بشه و اینکه اون پروژه ها کلاً از سورس های بیرون استفاده نمی کنند و خودشون همه کد ها را می نویسند و برای پروژه های معمولی هم که اینقدر دنگ و فنگ نداره به قولی هکم شده شده ....