یک نقص امنیتی در الگوریتم پنهان سازی مورد استفاده در پنهان کردن اسم رمز و Login ID در Microsoft Enterprise Manager for SQL Server 7.0 وجود دارد. این مشکل زمانی رخ میدهد که بخواهید SQL Server جدیدی را در Enterprise Manager نصب کنید یا SQL server نصب شدهای را ویرایش کنید (منظور زمانی است که برخی مشخصههای آن تغییر میدهید). اگر SQL Server ، Login name به جای یک Domain ، User name ویندوز بکار رود و checkbox عنوان "Alway prompt for login name and password" ست نشده باشد، LoginID و اسم رمز به صورتی ضعیف پنهان شده و در رجیستری ذخیره میشود.
هنگامی که یک (database Administrator)DBA به داخل یک workstation با یک log ، Profile میشود LoginID و اسم رمز، هر دو در کلید رجیستری ذخیره میشوند، این اطلاعات به عنوان یک فایل با نام NTUSER.DAT (در ویندوز NT) یا USER.DAT (در ویندوز 95 یا ویندوز 98) زمانی که کاربر logoff میکند ذخیره میشود. فرد متخاصم میتواند این فایل را در یک ویرایشگر متن باز کرده و DBA ، loginID و اسم رمز پنهان شده را ببینید. فرد متخاصم میتواند اسم رمز و login ID رمز شده پنهان شده را برگردانده و loginID و اسم رمز را بدست آورد. وجود این مشکل امنیتی به متخاصمین محلی و راه دور این اجازه را میدهد که اسم رمز Administrator سیستم را بدست آورده و کنترل کاملی روی پایگاه داده روی سرور داشته باشند. این مشکل امنیتی در Microsoft Enterprise Manager for SQL server 7.0 وجود دارد. سیستم پنهان سازی که برای پنهان کردن اسم رمز و SQL server ، LoginID نصب شده بکار میرود، قابل کشف است. روش پنهان سازی از جانشینی الفبایی استفاده میکند و هرکدام از کاراکترهای Unicode در اسم رمز با دو بایت متناسب با موقعیتشان در رشته، XOR شدهاند. اگر checkbox با عنوان “Always prompt for login name and password” هنگامی که SQL server نصب میشود ست نشده باشد، LoginID و اسم رمز به صورت ضعیفی در رجیستری در قسمت :
--------------------------------------
[HKEY_CURRENT_USERSOFTWAREMicrosoftMSSQLServerSQLEWRegistered Server X]
--------------------------------------
ذخیره میشود. اطلاعات ذخیره شده در HKEY_CURRENT_USER زمانی در دسترس است که کاربر در حال حاضر log شده باشد در این حال زمانی که کاربر ویندوز NT به سیستم log میشود یک کپی متفاوت از HKEY_URRENT_USER لود میشود و هنگامی که کاربر Logoff میکند محتویات HKEY_URRENT_USER در فایل NTUSER.DAT یا USER.DAT ذخیره میشود و این فایلها را میتوان در Notepad ویندوز باز کرد و loginID و اسم رمز را براحتی در آن دید اگر DBA از یک workstation دیگری، به سیستم log کند، فایل NTUSER.DAT روی همان workstation که کاربر از طریق آن به سیستم log شده است ذخیره میشود.
برای حل این مشکل امنیتی و استفاده مطمئن از SQL server، مایکروسافت پیشنهاد کرده که از Windows Integrated security استفاده شود زیرا در مد Integrated security (امنیت یکپارچه)، اسم رمزها هیچگاه ذخیره نمیشوند.
اگر SQL server ، LoginID برای Logging به یک سرور در Enterprise Manager تعیین شده باشد، مایکرسافت پیشنهاد میکند که از انتخاب “Always Prompt for Login name and password" برای جلوگیری ذخیره اسم رمزها در رجیستری استفاده کنید.