رفتن به مطلب
  • 0

کمک در محدود کردن نمایش اطلاعات دیتابیس،درنسخه ازمایشی


amirjun32

سوال

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

تمام اموزشای پرداخت درون برنامه ای روهم خوندم.ولی دراین باره چیزی دستگیرم نشد.

ممنون میشم راهنمایی کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • پاسخ ها 74
  • ایجاد شده
  • آخرین پاسخ

ارسال‌های توصیه شده

سلام من تاپیک رو کامل نخوندم ولی سوالت رو خوندم

یه کار میتونی انجام بدی که توی SQL دستور Selet TOP 20 داریم که مثلا 20 رکورد اول رو نشون میده شماره کاری که میتونی انجام بدی اینه که به جای عدد 20 یه متغیر سراسری تعریف کنی که پیشفرض 20 هست وقتی که برنامه رو فعال کردی این متغیر یه عدد حداکقر بشه مثلا 100000000 که اگه 400 تا رکورد داشته باشی 100000000 اول رو برای شما کوری میگیره که همون 400 تا رو نشون میده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز دیگه دارن میگن که چه کارهایی بکنید تا امنیتش بهتر شه.

برای دیتابیس اگه میخوای آفلاین باشه میتونی روی دیتابیست فقل گذاری کنی و رمزشو به وسیله الگوریتم های مناسب رمز گذاری Encode کنی. *مکار*

اگه ترس از هک و کرکش دارید اینو بدونید که همه نه برنامه نویسن و نه همه هکر و کرکر *نمیدونم*

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوستان.

کرک کردن دیتابیس اگر Encode شده باشه اولین راهش کشف الگوریتم اینکریپت هست که یه مقدار زمان میبره دوم اینکه Dump کردن اطلاعات زمان خونده شدن اطلاعات از حافظه که تا اطلاعات کامیل لود نشه یعنی مثلا فقط 20 رکورد لود بشه از این روش فقط میشه همون 20 رکورد رو بازیابی کرد که در این شرایط باید کاری کنیم که تعداد رکوردها اول کامل لود بشه (1-خرید برنامه 2-تغیییر در برنامه اجرایی)

برنامه های زیادی برای دامپ از حافظه هست...

البته اگر دیتابیس رو Encode کنی کسی حوصلش نمیشه کرکش کنه غیر از اینکه برنامه خیلی خواص باشه.(بهترین راه که تست خودشو همه جا حتی رو server پس داده)

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من قبلا تو یه انجمن دیگه این کدهارو گذاشتم و اینجا هم کپی کردم تا بچه های اینجا هم استفاده کنند.

در اینجا نحوه رمز گذاشتن روی دیتابیس رو با کمک لایبراری Cipher که باید از قبل اون رو داخل پوشه لایبراری بریزید و فعالش کنید رو میزارم

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



  Sub Process_Globals
   Dim mysqlc As SQLCipher  'اینجا یه متغیر برای ساخت یه دیتابیس کد شده تعریف می کنیم
Dim sql1 As SQL
End Sub 'در ادامه هم یه متغیر دیتابیس معمولی که داریم رو تعریف می کنیم

   Sub Globals
Dim label1 , label2 As Label
Dim curs1 , curs2 As Cursor
Dim list1 As List
End Sub  ' اینجا یه لیست تعریف می کنیم که بتونیم اطلاعات رو جابجا کنیم از دیتابیس معمولی به کریپت شده  
    Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("layout1")
   File.Copy (File.DirAssets , "sia.db", File.DirInternal , "sia.db")
sql1.Initialize (File.DirInternal  , "sia.db" , False)   'اینجا دیتابیس اصلی رو میریزم تو حافظه
 If File.Exists (File.DirInternal  , "sia5.db")= False Then
mysqlc.Initialize (File.DirInternal  , "sia5.db", True , "1234test" , File.DirAssets)      'اینجا می گیم اگه دیتابیس کریپت شده قبلا ساخته نشده بسازه و پسورد   بهش میدیم که باید دقت بشه پسورد فراموش نشه تا بتونیم در برنامه اصلیمون   از دیتابیس با همین پسورد استفاده کنیم
و بعد از پسورد ازمون می خواد که آدرس فایل sqlcipher_native.zip رو بدیم   که همینی که من دادم رو بده عزیز و حتما این فایل رو در برنامه کنار لایه   ها ادد کن در قسمت فایل (خودت کپی پیست نکن و از قسمت فایلو ادد استفاده کن
mysqlc.ExecNonQuery("CREATE TABLE shim (Ename TEXT , Fname TEXT)")

'اینجا دیتابیس کریپت شده رو می گیم یه جدول بسازه با دو تا ستون  که از  اینجاها مثل کد های sql هست و اینکتابخانه تو این کدها هیچ فرقی نداره  باsql


Else

mysqlc.Initialize (File.DirInternal  , "sia5.db", True , "1234test" , File.DirAssets)

'اینجا هم گفتیم اگه ساخته شده فقط تعریف کنه با پسوردی که دادیم قبل بهش
End If

curs1=sql1.ExecQuery ("SELECT Ename, Fname FROM shim")  

'اینجا هم اطلاعات دیتابیس انتقال می دیم به داخل این متغیر که تعریف شده در بالا   
For n=0 To curs1.RowCount -1  

curs1.Position = n
list1= Array As String (curs1.GetString ("Ename") , curs1.GetString ("Fname"))
mysqlc.ExecNonQuery2 ("INSERT INTO shim VALUES (?,?)" ,list1 )

Next
' یه حلقه اینجا درست کردیم که اطلاعات دیتابیس معمولیمون رو بریزه تو دیتابیس کریپت شده و انتقال بده 
curs2= mysqlc.ExecQuery ("SELECT Ename,Fname From shim")
curs2.Position = 3
label1.Text = curs2.GetString ("Fname")
label2.Text = curs2.GetString ("Ename")
End Sub

' کار تمومه و دیتابیس کریپت شده آماده هست و در اینجا برای تست که نشون می ده اطلاعات رو از داخل دیتابیس کریپت شده اونها رو رو لیبل هامون چک می کنیم همونطور که دیدی همه چیز مثل sql هست و این کتابخانه فقط در inistalize یکم فرق داره تعریفش که باید پسورد و محل فایلsqlcipher_native.zip رو نشون بدی که حتما باید این فایل رو در پوشه فایل ادد کنید از داخل خود برنامه تا کار کنه امیدوارم توضیحات کامل باشهتوجه کنید که اینجا داریم یه دیتابیس معمولی رو تبدیل به دیتابیس کریپت شده میکنیم که دیتابیس کریپت شده داخل گوشی یا ایمولاتور هست و باید درش بیارید که با برنامه eclips می شه یا با رفتن به روت و پیدا کردن دیتابیس داخل برنامه ای که ساختیدبعد می تونید ازش استفاده کنید با همین کتابخانه sqlcipher و دادن رمزتون که قبلا براش تعیین کردید

برای مشاهده بهتر این کدها بهتره اول اونهارو کپی کنید داخل برنامه اونجا درست نشون می ده

و برای برداشتن دیتابیس کریپت شده جدید باید از پوشه data/data داخل پروژه خودتون در روت گوشی یا ایملاتور اقدام کنید.

توجه کنید که رمز شما در هنگام دیکامپایل نشان داده می شه و باید با الگوریتم خواصی جداگانه رمز رو تعبیه ببیند که با دیکامپایل هم به راحتی به دست نیاد.

در توضیحات این برنامه باید قید کنم که در اندروید 4 به بالا ممکنه برخی گوشی ها فورس کلوز بدن که بیسیک فور اندروید این مشکل رو گفته به این شکل حل کنید

- Starting from B4A v3.50 you need to disable the virtual assets folder (a new debugging feature). This is done by adding the following line to the main activity:

Code:

#DebuggerForceStandardAssets: true

کد مورد نظر رو به اکتیویتی مین اضافه کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

برنامه دیتابیس داره انکریپت شده

قسمت بعدی هم که بعد خرید فرضی میاد باز هم دیتابیسه منتها آنلاین که البته به دیتا بیس اصلی منتقل میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

از خوبی های تبدیل دیتابیس به دیتابیس کریپت شده اینه که هیچکی جز شما نمی تونه ازش استفاده کنه و برای استفاده رمز شما رو باید داشته باشه

و از بدی هاش اینه که حجم برنامتون رو کمی می بره بالا ولی سرعت سرچ داخلش و بقیه چیزا فرقی نداره

لینک ارسال
به اشتراک گذاری در سایت های دیگر

از خوبی های تبدیل دیتابیس به دیتابیس کریپت شده اینه که هیچکی جز شما نمی تونه ازش استفاده کنه و برای استفاده رمز شما رو باید داشته باشه

و از بدی هاش اینه که حجم برنامتون رو کمی می بره بالا ولی سرعت سرچ داخلش و بقیه چیزا فرقی نداره

درآوردن دیتا بیس رمزگذاری شده کار سختی نیس

حجم دیتابیس هم تغییر نمیکنه تا اونجایی که من میدونم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

حجمش فایل ای پی کا تغییر می کنه چون نمی تونه فشرده کنه دیتابیس کریپت شده رو و در مورد در اوردن رمزش اگه از الگوریتم استفاده کنی برای رمز دادن مطمئنن کار هر کی نیست در اوردنش

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من دیدم دیتابیس رو اما الان نمیدونم کجاس

هنوز نا امید نشدم

فقط mainfest رو دیدم که اتصال اینترنت داره و برداشتم و برنامه کار نکرد*لال**لال*

هروقت نا امید شدی بگو تا مهدی بگه چطوری باز میشه

اگه دوستان موافق باشن بعدش یه ویدیو از هکش هم میزارم تا بیینین چقد راحته

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

کی همچین حرفی رو زده؟

بازار به این سرعت بالایی که داره مگه دیتابیس آفلاین هست؟؟؟

حجم کل اطلاعات یک کتاب چند کیلوبایت هست؟ یا چند مگابایت است؟

شما میتونید توی برنامه تعریف کنید که از دیتابیس آنلاین مقدار 1 تا 10 رو بگیره و نشون بده . حجم این مقدار 1کیلوبایت هم شاید نشه !

ScrollView که به آخر رسید 10 تای دیگه رو بگیره و الی آخر !!!

این کجا برای برنامه مشکلی پیش میاره؟ مطمئن ترین راه حفظ اطلاعات ، استفاده از دیتابیس آنلاین هست

هرکس هم با این حرف من مخالفه بنده پای حرفم تا آخرش هستم و صحبت میکنیم توی همین تاپیک.

مثال هایی که زدم آیا دیتابیس کوچکی دارن؟؟؟

ادامه پاسخ:

از دیتابیس آنلاین در برنامه استفاده شده !

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درآوردن دیتا بیس رمزگذاری شده کار سختی نیس

امان از تجربه :D

لینک ارسال
به اشتراک گذاری در سایت های دیگر

یک توضیحی در مورد برنامه ای که نوشتم برای تست امنیت بدم:

مثلا بعد از خرید شماره سریال گوشی شما توی دیتابیس آنلاین ثبت میشه! حالا در ورودی های بعدی بررسی میشه که شماره سریال گوشی شما

توی دیتابیس وجود داره یا نه !!! اگه وجود نداشت که همون اطلاعات قبلی رو بالا میاره !!! اما...

اگه وجود داشت به یک Table دیگه از دیتابیس آنلاین میره و اطلاعات جدید رو دانلود میکنه و توی برنامه نشون میده !!!

حالا این کجاش مشکل داره و کی همچین کاری رو تکذیب میکنه؟؟؟؟؟

برای بالاتر رفتن امنیت حتی میشد کاری که در در صورت DeCode شدن برنامه هم باز کسی نتونه اطلاعات دیتابیس آنلاین رو بکشه بیرون

مثلا محدود کردن دسترسی ها ، شرط گذاری ها و فرستادن مقادیر به دیتابیس و برگشت اونها و در صورت تایید شدن ، نمایش اونها و خیلی خیلی کارهای دیگه

یا اصلا اینکه دیتابیس با کامپیوتر باز نشه و فقط با گوشی باز بشه ، شرط اینکه برای باز شدن دیتابیس از توی خود PHP هم کلی شرط میشه تعیین کرد

امنیت PHP واقعا بالاست ...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...