PDA

View Full Version : Encryption



najeeb
جمعه 27 شهریور 1383, 10:46 صبح
چطور میتونم روی Tables یا Database رمز بزارم که توی Sql Server یا Application دیگه ای غیر از برنامه خودم قابل مشاهده نباشه . نه Structure اون و نه Data هاش.؟؟

AminSobati
جمعه 27 شهریور 1383, 15:27 عصر
دوست عزیزم ساختار Security در SQL Server متفاوته با FlatFile Databases (مثل اکسس). شما از راه تعریف Username و Login Name با Permissionsها امنیت رو تامین میکنید. اگر میخواهید اطلاعات کد بشن، باید از یک الگوریتم برای Encryption استفاده کنین موقع ورود اطلاعات و موقع نمایش به کاربر، معکوس الگوریتم رو عمل کنین تا کشف رمز بشه. این دو کار رو میشه خیلی راحت در دو Function جدا قرار داد و موقع SELECT و INSERT و UPDATE ازشون استفاده کرد.

najeeb
جمعه 27 شهریور 1383, 23:16 عصر
اگه نخوام فقط Structure کسی نتونه متوجه بشه چطور؟؟؟

AminSobati
جمعه 27 شهریور 1383, 23:47 عصر
منظورتون از Structure چیه دقیقا؟ سورس Stored Procedure و View یا ...؟

sharpboy
شنبه 28 شهریور 1383, 02:54 صبح
فکر کنم Sql Srever 2005 این امکان رو تو ذاتش داره
البته این رو هم من از کسی شنیدم

najeeb
شنبه 28 شهریور 1383, 09:44 صبح
منظورم فیلدها و نوع فیلدها و.....

AminSobati
شنبه 28 شهریور 1383, 16:04 عصر
اگر قراره کاربری اجازه نداشته باشه ساختار جداول رو ببینه، براش در دیتابیس Username نسازید.

najeeb
یک شنبه 29 شهریور 1383, 10:02 صبح
دوست عزیزم منظورم اینه که مثلا توی Enterprise Manager اگه یکی روی یه جدول رایت کلیک کرد وخواست ساختارشو ببینه یا تغییر بده نتونه.

AminSobati
یک شنبه 29 شهریور 1383, 13:36 عصر
در Enterprise Manager، روی نام سرور Right Click کنین، بعد Edit SQL Server
در صفحه ای که ظاهر میشه Always prompt for login رو چک بزنین تا کسی که میخواد وارد Enterprise Manager بشه مجبور باشه Login کنه. حالا اگر اون فرد دارای اجازه کافی نباشه، نمیتونه لیست Tableها در دیتابیسها رو ببینه و یا ساختارشون رو بررسی کنه.

najeeb
سه شنبه 31 شهریور 1383, 13:08 عصر
دوست عزیزم وقتی من مثلا یه برنامه رو که بانک اون Sql Servere رو به یکی میفروشم و اون خودش Sql رو نصب می کنه اونوقت چکار باید بکنم که اگه یکی خواست ساختار یک جدول رو ببینه یا تغییر بده نتونه و فقط بشه از جدول Data خوند و ... کرد؟؟؟؟

AminSobati
سه شنبه 31 شهریور 1383, 13:55 عصر
در این حالتها از MSDE استفاده کنین که نصب اون همراه نصب برنامه اصلی شما صورت میگیره و تمام Administration رو از طریق برنامه خودتون انجام میدین. کاربرهای دیگه به اون نمیتونن راهی داشته باشن

najeeb
چهارشنبه 01 مهر 1383, 10:23 صبح
مرسی :?: :?: :?: :?: :?: :?:

AminSobati
چهارشنبه 01 مهر 1383, 19:33 عصر
MSDE ویرایش قابل انتشار (Distribute) از SQL Server هست که در شاخه ای به نام MSDE در سی دی SQL Server وجود داره.
زمانیکه برنامه شما در حال نصب روی کامپیوتر کاربر هستش، میتونین از طریق Setup برنامه خودتون، MSDE رو نصب کنین. البته MSDE محدودیتهای خاصی به نسبت سایر ویرایشهای SQL Server داره (مثلا حجم دیتابیس در اون از 4GB نباید تجاوز کنه و...)
برای اینکه ذهنتون در مورد MSDE دچار ابهام نباشه عرض میکنم که دقیقا یکی از ویرایشهای SQL Server هست:
Enterprise Edition
Personal Edition
Developer Edition
MSDE
CE
توضیحات و راهنمایی کاملی در Books Online در مورد MSDE وجود داره.

najeeb
جمعه 03 مهر 1383, 11:22 صبح
مرسی دوست خوبم یک دنیا ممنون :flower: :flower:

AminSobati
جمعه 03 مهر 1383, 12:57 عصر
موفق باشین :)

Developer Programmer
جمعه 03 مهر 1383, 17:05 عصر
خیلی راحت در دو Function جدا قرار داد و موقع SELECT و INSERT و UPDATE ازشون استفاده کرد.
امین جان این قسمت رو من نفهمیدم ! یعنی اول Decrypt میکنی بعد Select یا در داخل Select از Function استفاده میکنی؟ :roll:
---
منتظر مقاله SQL-Server به قلم ارزشمندت هم هستم !! :!:

AminSobati
جمعه 03 مهر 1383, 21:07 عصر
افشین جان منظور من این هست که دو تابع بنویسیم مثلا به اسمهای MyEnc و MyDec و به این شکل استفاده کنیم:

برای ورود اطلاعات:

INSERT MyTable(Field1) VALUES(DBO.MyEnc('Value'))

برای خواندن اطلاعات:

SELECT DBO.MyDec(Field1) FROM MyTable

راستی جریان مقاله چیه :) :?:

موفق باشین

Developer Programmer
شنبه 04 مهر 1383, 18:12 عصر
دو تابع بنویسیم مثلا به اسمهای MyEnc و MyDec
امین جان فدات شم الهی... تابع رو باید چطور نوشت؟ که مثلا یه رشته رو بگیره و بعد به کد اسکی هر کراکتر یک واحد اضافه یا کم کنه؟ نوشتنش مثلا تو دلفی راحته اما تو sql-server چطوره؟
فدات شم :!:

AminSobati
شنبه 04 مهر 1383, 19:39 عصر
افشین جان الگوریتمهای زیادی برای Encryption وجود داره و این موضوع، سوژه پایان نامه دانشجوهای زیادی در سراسر جهان بوده. ولی راهی که شما فرمودین هم میتونه یک روش ابتکاری باشه. در SQL Server توابعی برای این کار هستند. مثلا:


SELECT CHAR(97)
SELECT ASCII('a')

ببینم چیکار میکنی :) :wink:

Developer Programmer
شنبه 04 مهر 1383, 23:33 عصر
ببینم چیکار میکنی
امین جان ... وقتی ملتی دارن ما رو نگاه میکنن! اینطور کسی رو ضایع نکن! :!: شما که دیگه میدونی من تا چه حد sql-server بلدم !
راستش امروز داشتم کتاب sql-server رو میخوندم فکر کنم تابع Replace بد نباشه ولی مشکل اینجاست که حلقه (Loop ) رو نمیدونم چطور ایجاد کنم! که از اولین کراکتر شروع کنه و بره تا آخرین کراکتر

AminSobati
یک شنبه 05 مهر 1383, 00:33 صبح
افشین جان خودتون رو دست کم نگیرین!
برای ایجاد حلقه از WHILE استفاده میشه. مثلا این حلقه از 1 تا 10 رو چاپ میکنه:


DECLARE @Counter INT
SET @Counter=1

WHILE @Counter<=10
BEGIN
PRINT @Counter
SET @Counter=@Counter+1
CONTINUE
END

این هم برای اسکن کردن کاراکترها:

DECLARE @Counter INT, @MyStr VARCHAR(200)
SET @Counter=1
SET @MySTr='This is a sample text!'

WHILE @Counter<=LEN(@MyStr)
BEGIN
PRINT STR(@Counter) + '-' + SUBSTRING(@MyStr,@Counter,1)
SET @Counter=@Counter+1
CONTINUE
END
موفق باشین