PDA

View Full Version : امنیت



IC_prog
یک شنبه 23 تیر 1387, 08:54 صبح
مجموعه تجربیات شخصی من باعث شد تا اقدام به نوشتن هیچ برنامه ای نکنم مگر آنکه موارد زیر را مد نظر قرار بدم :
در مورد برنامه های سینگل
ابتدا یک جدول مثلا user_ctrl در برنامه ایجاد میکنم که جدول کنترل نام داره و بعد :
1- تاریخ و ساعت ورود و خروج از برنامه در جدول فوق ثبت و در هر ورود آخرین تاریخ و ساعت کارکرد کاربر جهت اطلاع نمایش یابد.
2- در صورتی که تاریخ و ساعت خروج ثبت نشده در ورود بعدی به کاربر در مورد خروج نامتعارف از برنامه هشدار داده شود.
3-موقع ورود به برنامه فایلهای cdx چک شود اگر پاک شده بود عمل ایندکس سازی خودکار انجام شود.
4- dbf های برنامه چک شود اگر هدر آسیب دیده خودکار ابتدا یک نسخه پشتیبان از dbf آسیب دیده تهیه و بعد dbf اصلاح گردد. (رویداد فوق در جدول کنترل با ذکر تاریخ .ساعت و نام کاربری ثبت شود)
5- در تعاریف کدینگ قسمت حذف کد از بخش نمایش یا ایجاد کاملا جدا شود.

6- رکوردهای حذفی از جداول مهم در یک جدول جداگانه ثبت شده و در صورت لزوم قابل گزارشگیری باشد( مثلا لیست فاکتورهای حذف شده )
7- کلیه عملیاتی که کاربر در برنامه انجام میدهد حتی در حد مشاهده کدینگ . در جدول کنترل با ذکر تاریخ.ساعت.عنوان کاربری.نوع عملکرد ثبت شود.
8- چنانچه برنامه تحت داس است در بدو ورود به برنامه سایز فایلهای com,exe که برنامه با آنها سرو کار دارد خصوصا COMMAND.COM چک شود اگر تغییر کرده بود به کاربر هشدار دهد(احتمال ویروسی شدن)
9-در صورتی که کاربر اقدام به تهیه نسخه پشتیبان نمی کند ضمن دادن هشدار .برنامه بصورت خودکار اقدام به تهیه نسخه پشتیبان با نام خاص کند (نام فایل نسخه پشتیبان خودکار با کاربر فرق داشته باشد) و عدم تهیه نسخه پشتیبان توسط کاربر در جدول کنترل با ذکر تاریخ ثبت گردد.
10- در مورد برنامه های ONLINE تاریخ سیستم با تاریخ آخرین رکورد ثبت شده چک شود اگر فاصله زیاد بود و یا معکوس هشدار داده شود.( این رویداد با ذکر تاریخ.ساعت و نام کاربری در جدول کنترل ثبت شود.
11- در موقع خروج از برنامه تعداد رکوردهای هر جدول در جدول کنترل ثبت و در ورود چک شده و در صورت اختلاف ضمن هشدار به کاربر رویداد با ذکر تاریخ.ساعت و نام کاربری در جدول کنترل ثبت شود.
12- در موقع ورود رمز کاربری برای ورود به برنامه در صورت عدم موفقیت این رویداد با ذکر تاریخ و ساعت در جدول کنترل ثبت گردد.( البته در موقع ورود رمز کلیدهای CAPS LOCK,NUM LOCK کنترل میشود)
13- در زمان فعال بودن فرم ورود اطلاعات اجازه باز کردن هیچ فرم دیگری را به کاربر نمی دهم.

mehran_337
یک شنبه 23 تیر 1387, 15:05 عصر
دوست گرامی !
از این تاپیکها واقعا لذت می برم وقتی می بینم کاربری خود نتایج تلاشش را گرد آوری کرده و در اختیار دوستان قرار می دهد . پس باز هم سپاس.

چند نکته :
فایل کنترل شما پس از مدت کوتاهی بسیار حجیم خواهد شد پس باید مدیریت شود این مشکل در اتوماسیون اداره ما که با sql طراحی شده نیز وجود دارد.
من هم مثل شما عقیده دارم که هر چه اطلاعات مشاهده ای کاملتر ، برنامه بیشتر به برنامه نویس آرامش می دهد اما فراموش نکنیم خیلی اطلاعات کاربردی ندارد.
در مورد 1 مثلا برنامه هایی وجود دارد که عملکرد کاربر در ویندوز را ریز می کند یا تمام سخت افزارها مثلا شماره IC را هم نمایش می دهد اما ما چقدر استفاده می کنیم؟
چند در صد نیاز به مشاهده حضور کار بر در برنامه هست ؟ مثلا در یک بانک ، برنامه همیشه باز است 8 ساعت و هیچوقت بسته نمی شود . ممکن است یک ساعت استفاده ای نشود اما برنامه باز است. چون از اول صبح مشتریها جهت چک و واریز و دریافت و وام و ..

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

در مورد 3 و 4 بسیار خوب است و من هم رعایت می کنم
مورد 5 و 6 ایده بسیار خوبی است و حتما از این ایده شما استفاده خواهم کرد
مورد 7 هم خوبست اما فکری به حال حجم فایل کنترل بکنید
مورد 9 هم قبول دارم به شرطیکه این کار در حجم اطلاعات بالا باعث نارضایتی کاربر نشود که وقت خروج چرا برنامه کند است و به فکر ریست کردن سیستم بیفتد که واویلا
مورد 10 و 11 چه کاربردی دارد؟
مورد 12 چطور CAPS LOCK,NUM LOCK را کنترل می کنید من کدش را ندیده ام.
مورد 13 هم کار متعارفی است که باید انجام شود.
از زحمتی که کشیدید ممنونم و خسته نباشید عرض می کنم .
یا علی

shamim_41
یک شنبه 23 تیر 1387, 15:51 عصر
با تشکر از دوستان عزیز

مورد 12 چطور CAPS LOCK,NUM LOCK را کنترل می کنید من کدش را ندیده ام

gcOldLock = NUMLOCK( ) && Save original setting
WAIT WINDOW 'Press a key to turn Num Lock on'
glOldLock = CAPSLOCK( ) && Save original setting
= CAPSLOCK(.T.) && Turn CAPS LOCK on

روی هم رفته کار خیلی خوبیه من که استفاده کردم از دوست عزیزیم استاد ارجمند آقا مهران هم ممنونم در ضمن آقا مهران چه خبر از ظاهر گرافیکی برنامه ؟

mehran_337
یک شنبه 23 تیر 1387, 16:30 عصر
چه جالب شمیم عزیز !
تاحالا واسم کاربردی نداشته و احساس می کردم باید از api استفاده کرد .اما می بینم که خود فاکس هم تابع داره . شاید در برنامه های آتی حتما از این تابع مخصوصا واسه statbar استفاده کنم.
ظاهر گرافیکی هم آخرین بخشش آمده شده و به دیده منت آماده انجام وظیفه هستم تا دوستان چه بخواهند ...

IC_prog
دوشنبه 24 تیر 1387, 08:34 صبح
با تشکر از استاد مهران
توضیح :
مورد 1 : البته روشهای زیادی برای تهیه گزارش از عملکرد سیستم در روز و ساعات مختلف وجود دارد ولی به تجربه من آنچه که خود برنامه کنترل میکند برای کاربر معمولی قابل قبول تر و رسمی تر است.شما مجبورید همیشه در مورد گزارش نرم افزارهای tools یک بغل توضییح دهید ! (توجه داشته باشید سطح اطلاعات کاربر از کامپوتر چقدر است ) . اما کاربرد : در مواقع تخریب یا تغییر اطلاعات بصورت عمدی کاربر مورد نظر قابل ردگیریست (همراه مورد 7)
مورد 2 : من در یکی از برنامه هام کاربر رو بخاطر خروج غیر متعارف تنبیه میکنم !!:لبخند:(در صورت خروج غیر متعارف ورود بعدی به سیستم با نمایش شمارش معکوس 5 دقیقه طول میکشد . بنابراین کاربر به مرور زمان برای اینکه گرفتار این 5 دقیقه معطلی نشود درست خارج میشود)
مورد 9 : این هزینه ایست که باید برای امنیت اطلاعات پرداخت ( شخصا حوصله ناله های مشتری رو که اطلاعاتش رو از دست داده ندارم. ) ضمن اینکه با آمدن پردازنده های سریع تر زمان backup گیری مانند قدیم زیاد طولانی نیست . البته این موارد همه در مورد برنامه های سینگل است که نسبت به تحت شبکه حجم جداول کمتر است .
مورد 10: در برنامه سینگلی که تاریخ در برنامه نقش مهمی داشته و خودکار ثبت میشود: چنانچه به دلیلی ( مشکل BIOS,...) تاریخ به عقب برگردد و یا با بصورت دستی به جلو رود با مقایسه تاریخ آخرین رکورد در صورت اختلاف زیاد هشدار داده میشود که تاریخ به نظر درست نیست (البته این مورد
همانطور که عرض کردم بدرد برنامه های online که هر روز ورود اطلاعات میشود میخورد و در برنامه هایی که زیاد با تاریخ سرو کار دارند مانند ویدئو کلوپ.کتابخانه ,... کاربردیست ) البته تاریخ در فرم رمز ورودی نمایش داده میشود ولی فرض بر این است که کاربر دچار روز مررگی شده و به تاریخ دقت نکند.
مورد 11 : چنانچه کسی بصورت غیر مجاز خارج از برنامه جدولی را باز و رکوردی را حذف و یا ایجاد کند کاربر سریع متوجه شده و مسئله تا حدودی قابل پیگیریست .
در پایان اینکه این روش منه و قطعا روشهای بهتری برای جایگزینی این موارد وجود خواهد داشت و گستره امنیت در نرم افزار قطعا وسعتر از این موارد است .