ورود

View Full Version : امنیتی کردن dbfها در داس



new_day
دوشنبه 06 فروردین 1386, 14:08 عصر
چگونه میتوان فایلهای dbf در فاکس 2.6 را در محیط شبکه امنیتی کرد تا کسی نتواند خارج از برنامه آنها را باز کرده و استفاده کند حتی وقتی توسط چند کاربر دیگر در حال استفاده باشد
قبلا دوستان توضیحاتی در مورد این کار داده بودند کامل نبود
خواهشمندم راهنمایی بفرمایید

ealvandi
جمعه 10 فروردین 1386, 12:04 عصر
تا اوونجایی که من میدونم هیچ امنیتی وجود نداره

ولی 2 راه رو که من استفاده میکنم اینه

1 ) من نام فایل بانکم و پسوند اونو عوض میکنم وقی وارد برنامه ام میشم به نام اصلی تغییر نام و پس از خروج دوباره به حالت اولیه برش میگردونم

2) هنگام ذخیره اطلاعات از یک تابع Encode متن (که باید خودت درستش کنی به سلیقه خودت) استفاده کرده و متن رو کد و سپس ذخیره میکنم - هنگام بازیابی هم از تابع Decode متن (که باز باید خودت درستش کنی به سلیقه خودت) دی کد کرده بعد استفاده کنی.

امیدوارم با استفاده از این 2 راه مانع از سو ء استفاده افراد غیر مجاز از بانکت بشی.

موفق باشی.

rezaTavak
جمعه 10 فروردین 1386, 12:53 عصر
من نام فایل بانکم و پسوند اونو عوض میکنم وقی وارد برنامه ام میشم به نام اصلی تغییر نام و پس از خروج دوباره به حالت اولیه برش میگردونم

اینکار در شبکه مشکل ایجاد می کنه


هنگام ذخیره اطلاعات از یک تابع Encode متن (که باید خودت درستش کنی به سلیقه خودت) استفاده کرده و متن رو کد و سپس ذخیره میکنم - هنگام بازیابی هم از تابع Decode متن (که باز باید خودت درستش کنی به سلیقه خودت) دی کد کرده بعد استفاده کنی.


این هم میشه اما اثراتی مانند کاهش سرعت و کند نویسی بسیار زیاد را بدنبال خواهد داشت.

ealvandi
جمعه 10 فروردین 1386, 13:04 عصر
اینکار در شبکه مشکل ایجاد می کنه

هنگام اولین استفاده از برنامه این کار رو میشه انجام داد.



این هم میشه اما اثراتی مانند کاهش سرعت و کند نویسی بسیار زیاد را بدنبال خواهد داشت.

خیلی مفیده

شما راه بهتری سراغ داردید؟

rezaTavak
جمعه 10 فروردین 1386, 20:06 عصر
راه بهتری وجود نداره چون خاصیت فاکس با مدیران بانکهای اطلاعاتی در امنیت فرق داره!

new_day
جمعه 10 فروردین 1386, 20:45 عصر
با تشکر از دوست عزیزمون همانطور که آقا رضا گفتند در شبکه نمیشه از توابع encode استفاده کرد و ضمنا با تعویض پسوند هم نمیشه این کار را کرد چون نرم افزارهای زیادی هست که براحتی فایل را باز میکند
ایا راهی وجود دارد که در هدر فایل قرار دهیم مثلا متغیری که اگر با مقداری که با کد میدهیم اگر برابر شد فایل باز شود؟

rahro
شنبه 11 فروردین 1386, 06:42 صبح
با تشکر از دوست عزیزمون همانطور که آقا رضا گفتند در شبکه نمیشه از توابع encode استفاده کرد و ضمنا با تعویض پسوند هم نمیشه این کار را کرد چون نرم افزارهای زیادی هست که براحتی فایل را باز میکند
ایا راهی وجود دارد که در هدر فایل قرار دهیم مثلا متغیری که اگر با مقداری که با کد میدهیم اگر برابر شد فایل باز شود؟
روشی که دوستمان جناب ehsan-alvandi گفتند علاوه در شبکه , تا حدی منطقی نیست چرا که کاربر به محض ورود به برنامه با ریست کردن برنامه در اصل بانکهای را بصورت پیش فرض ریست کرده و دوباره همان آش و همان کاسه!.

با تشکر از دوست عزیزمون همانطور که آقا رضا گفتند در شبکه نمیشه از توابع encode استفاده کرد
من ندیدم آقا رضا این صحبت را بکنند بلکه ایشان در خصوص کاهش سرعت و کدنویسی زیاد صحبت کرده بودند.

rahro
شنبه 11 فروردین 1386, 06:47 صبح
1 ) من نام فایل بانکم و پسوند اونو عوض میکنم وقی وارد برنامه ام میشم به نام اصلی تغییر نام و پس از خروج دوباره به حالت اولیه برش میگردونم
.
روشی که دوستمان جناب ehsan-alvandi گفتند علاوه در شبکه , تا حدی منطقی نیست چرا که کاربر به محض ورود به برنامه با ریست کردن برنامه در اصل بانکهای را بصورت پیش فرض ریست کرده و دوباره همان آش و همان کاسه!.

با تشکر از دوست عزیزمون همانطور که آقا رضا گفتند در شبکه نمیشه از توابع encode استفاده کرد
من ندیدم آقا رضا این صحبت را بکنند بلکه ایشان در خصوص کاهش سرعت و کدنویسی زیاد صحبت کرده بودند.

mehdi_doraghi
سه شنبه 14 فروردین 1386, 16:07 عصر
شما می توانید قبل از اینکه بانک بسته یا باز شود عملیات زیر را انجام دهید.
هنگام بستن بانک یک تابع بنویسید که این 10 بیت به ابتدای بانک اضافه شود .
در هنگام باز کردن بانک 10 بیت اضافه شده کسر شوند

rezaTavak
سه شنبه 14 فروردین 1386, 18:06 عصر
اونوقت اگر اولی باز کرد و دومی خواست باز کنه؟

یا قبل از بستن برق رفت یا ...

kia1349
چهارشنبه 15 فروردین 1386, 07:23 صبح
تغییر در هدر فایلها کار خطرناکیه و در محیط شبکه نیز همان مشکلات را دارد

Esy_Programmer
یک شنبه 30 اردیبهشت 1386, 11:45 صبح
شما می توانید قبل از اینکه بانک بسته یا باز شود عملیات زیر را انجام دهید.
هنگام بستن بانک یک تابع بنویسید که این 10 بیت به ابتدای بانک اضافه شود .
در هنگام باز کردن بانک 10 بیت اضافه شده کسر شوند
اینکه با همون reset کردنه دوباره به حالت default بر می گرده

Esy_Programmer
یک شنبه 30 اردیبهشت 1386, 11:47 صبح
فکر می کنم code کردن فیلدها از همه بهتر باشه والا راه دیگه ای نیست

binyaz2003
یک شنبه 30 اردیبهشت 1386, 12:07 عصر
برای کد کردن و همینطور فشرده کردن فایلها و یا پوشه ها میتوانید از این دو fll که مخصوص ویژوال فاکس پرو نوشته شدند و رایگان هم هستند استفاده کنید.
vfpcompression.fll
http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,b5fdd81c-4d47-469b-acbb-ddda807adacc.aspx
vfpencryption.fll
http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,5d4a0cf0-7d1d-4353-a49b-667946ff1c81.aspx
فقط توجه کنید که توضیحات رو کامل بخونید این فایلها برای اجرا به فایلهای runtime دات نت احتیاج دارند که باید از همون سایت دانلود کنید.حجمشون کمه .اما به امکاناتشون می ارزه

وصال1386
یک شنبه 06 خرداد 1386, 23:13 عصر
من معمولا یک فیلد کنترلی به دیتابیسم اضافه میکنم که شامل محتویات کلیدی فیلدهای
دیگر البته به شکل کد شده است

rahro
دوشنبه 07 خرداد 1386, 06:42 صبح
من معمولا یک فیلد کنترلی به دیتابیسم اضافه میکنم که شامل محتویات کلیدی فیلدهای
دیگر البته به شکل کد شده است
منظورتون از یک فیلد کنترلی , آنهم به دیتابیس چیه ؟ میشه توضیح بدین !!!!:متعجب:

وصال1386
دوشنبه 07 خرداد 1386, 18:16 عصر
من برای اینکه محتویات dbf دستکاری نشه یک فیلد کنترلی اضافه میکنم که خلاصه ای از نکات هر فیلد + شماره رکورد را در خود بصورت کدشده نگهداری میکند.
در موقع ورود به برنامه رکوردها رو چک میکنم حال چنانچه DBF توسط شخصی دستکاری شود عدم تقارن فیلدها با فیلد کنترلی سبب رویداد اخطار میگردد.

rahro
سه شنبه 08 خرداد 1386, 06:31 صبح
من برای اینکه محتویات dbf دستکاری نشه یک فیلد کنترلی اضافه میکنم که خلاصه ای از نکات هر فیلد + شماره رکورد را در خود بصورت کدشده نگهداری میکند.
در موقع ورود به برنامه رکوردها رو چک میکنم حال چنانچه DBF توسط شخصی دستکاری شود عدم تقارن فیلدها با فیلد کنترلی سبب رویداد اخطار میگردد.
من که متوجه نشدم . مطمئنا گفته شما برای من سنگین است .

من برای اینکه محتویات dbf دستکاری نشه یک فیلد کنترلی اضافه میکنم که خلاصه ای از نکات هر فیلد + شماره رکورد را در خود بصورت کدشده نگهداری میکند
این کار باعث میشه dbf شما ناخواسته حجیم شود چون این عمل باید برای هر رکوردی که کاربر اضافه میکند اجرایی بشه !!

در موقع ورود به برنامه رکوردها رو چک میکنم حال چنانچه DBF توسط شخصی دستکاری شود عدم تقارن فیلدها با فیلد کنترلی سبب رویداد اخطار میگردد
این قسمت نکته ای ست که متوجه نمیشوم ؟! شما چطور رکوردهای رو که کاربر اضافه کرده رو چک میکنید؟!‌ توجه داشته باشیم سعی ما این است روشی ابداع کنیم که کاربر نتواند در کل dbf‌ دستخوش تغیرات قرار بده . در ثانی معمولا اشخاص داده های هک شده که از مجموع آنها یک رکورد ایجاد میشه رو دستکاری میکنن نه خود dbf رو !!!!‌ و بلفرض پذیرفتن این ایده شما برای یک تیبل با حجم بیش از یک میلیون رکورد چقدر کاربر را معطل چک کردن این روش میکنید ؟!؟؟؟
نه ! به نظر من منطقی نیست .

rezaTavak
سه شنبه 08 خرداد 1386, 07:19 صبح
روشی که ایشون استفاده میکنند شاید مثالی از MD5 باشد.

mehran_337
سه شنبه 08 خرداد 1386, 09:17 صبح
به نظر من مشکل بیشتر تغییر رکورد نیست بلکه دیدن اطلاعات رکورد است . ممکنه طرف با دیدن اطلاعات سواستفاده کنه و نیازی هم به تغییر نباشه.
خب حالا اگه رکورد حذف بشه چی؟؟؟ دیگه مقایسه ای وجود نداره که شما رکورد حذف شده را با چی چک می کنید؟؟؟؟؟

یعنی اول برنامه همه رکوردها باید چک شوند درسته؟؟؟؟ فکرشو کردین در یک حسابداری ساده چندتا رکورد باید چک بشه؟؟؟؟؟؟

mehran_337
سه شنبه 08 خرداد 1386, 09:21 صبح
روشی که ایشون استفاده میکنند شاید مثالی از MD5 باشد.

میشه بیشتر توضیح بدین

وصال1386
سه شنبه 08 خرداد 1386, 17:41 عصر
به نظر من مشکل بیشتر تغییر رکورد نیست بلکه دیدن اطلاعات رکورد است .


ممکنه طرف با دیدن اطلاعات سواستفاده کنه و نیازی هم به تغییر نباشه.
خب حالا اگه رکورد حذف بشه چی؟؟؟ دیگه مقایسه ای وجود نداره که شما رکورد حذف شده را با چی چک می کنید؟؟؟؟؟


یعنی اول برنامه همه رکوردها باید چک شوند درسته؟؟؟؟ فکرشو کردین در یک حسابداری ساده چندتا رکورد باید چک بشه؟؟؟؟؟؟


شما واقعا فکر میکنید اگر DBF قابل USE شدن نباشه محتویات داخلش هم قابل رویت یا
READ کردن نیست !!!

درمورد حذف رکورد فقط متوجه حذف میشویم .

در هر ورود صرفا رکوردهای جدید چک میشن . البته قبول دارم که روش من معایبی هم داره
ولی فعلا مجبورم این کار رو انجام بدم .

rahro
چهارشنبه 09 خرداد 1386, 06:54 صبح
جناب وصال :
درسته که هر فایلی رو میشه به کمک توابع سطح پائین مورد تغییر قرار داد ولی مشکله و درکل از روشی که ویژوال فاکس به صورت جداول باز در اختیار کاربر قرار میده خیلی مشکل تر .
هدف در این تاپیک ارائه یک راه کار نو ویا یک ایده نو میباشد . اینکه حقیر در این خصوص موضع گرفتم تنها به این دلیل است که فکر میکنم شما شفاف صحبت نمیکنید ایکاش دقیقتر توضیح میداید تا اگر قابل ملاحضه بود به کمک سایر دوستان مشکلات کوچکش رو هم حل میکردیم ولی آنچه شما دوباره فرمودید به نظر من دوباره حاوی اشکال است .
ببنید فرض میکنیم پروژه ما یک سیستم حسابداری باشد که کاربر بعد از اتمام عملیات یک روز کاری برای آغاز عملیات جدید مجبور باشد اسناد روز قبل خود را تائید کند .
حال صرف چک کردن رکوردهای جدید چگونه امنیتی را میتواند به دنبال داشته باشد .؟! رکوردهای قبلی چه میشوند ؟! اگر کسی قصد دستکاری داشته باشد برای رکوردهای جدید نیست چه بسا اگر در پایان یک سال مالی ترازنامه را هم گرفته باشیم کوچکترین تغییر به صورت غیر مجاز عواقب وحشتناکی به دنبال داره ؟!

rezaTavak
چهارشنبه 09 خرداد 1386, 07:56 صبح
md2 md4 m5 روشی برای صحت انتقال داده است. در اینترنت ممکن است بسته اشتباه ارسال بشه و باید این بعد از پایان دانلود چک بشه. مثلا شما در گرفتن یک سی دی لینوکس اگر حتی یک بیت هم ارسال درست نداشته باشه موثر است که در کنار هر سی دی آن یک فایل md5 هم هست. کل فایل ارسالی به هر حجم خوانده شده و با md5 آن چک می شود. اگر تناقصی بود آن فایل درست نیست.

اگر خواستید بعدا بنم یاد آوری کنید چنین کدی را بنویسم. گرچه :

http://en.wikipedia.org/wiki/MD5

راجع به آن توضیح داده شده است. یک کد جاوا اسکریپت هم دارد. مثال
MD5 hashes را هم نگاه کنید:


MD5("The quick brown fox jumps over the lazy dog (http://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog)")

= 9e107d9d372bb6826bd81d3542a419d6

MD5("The quick brown fox jumps over the lazy cog")
= 1055d3e698d289f2af8663725127bd4b

mehran_337
چهارشنبه 09 خرداد 1386, 08:02 صبح
شما واقعا فکر میکنید اگر DBF قابل USE شدن نباشه محتویات داخلش هم قابل رویت یا
READ کردن نیست !!!

اگه اطلاعاتی در این زمینه دارین بگید ما هم یاد بگیریم .



درمورد حذف رکورد فقط متوجه حذف میشویم .

حذف منطقی؟؟؟؟؟؟ با حجیم شدن جداول چه می کنید؟



در هر ورود صرفا رکوردهای جدید چک میشن .

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