PDA

View Full Version : سوال: قرار دادن رشته اتصال به پایگاه داده در فایل وب کانفیگ



mohandesan
یک شنبه 03 خرداد 1388, 12:12 عصر
من در مقاله امنیت دیدم که برای امنیت سایت باید رشته اتصال را در فایل وب کانفیگ قرار دهیم میشه در این مورد راهنمایی کنید( در ضمن من دارم با سه لایه بانک اطلاعاتی کار می کنم
در این حالت چه طور میشه ؟

یاسر مددیان
یک شنبه 03 خرداد 1388, 12:24 عصر
اینجوری تو web.config قرار بدین :



<configuration>
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=localhost;Initial Catalog=dbname;Persist Security Info=True;User ID=dbuser;Password=dbpass" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>


اینجوری هم فراخونی کنین :




ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
string connectionstring = connections["Connectionstring"].ConnectionString;

mohandesan
یک شنبه 03 خرداد 1388, 17:35 عصر
من اینکار را انجام دادم ولی نشد خطا میده وقتی که اونو برای اس کیو ال کامند ست می کنم
من حالا من چه طوری این کانکشن را برای اس کیو ال کامند تنظیم کنم هر کاری می کنم باز خطا می ده لطفا راهنمایی کنید



cmd.Connection =connectionstring ;

mohandesan
یک شنبه 03 خرداد 1388, 18:41 عصر
دوست عزیز روی خط دوم فراخوانی خطا میده انگار کلمه connections براش نااشناست میشه بگین غیر از این دیگه نیارزی نیست کاری بکنم متغیر sqlconnection دیگه نیاز نداره یا تنظیمات دیگری؟؟؟؟

mohandesan
یک شنبه 03 خرداد 1388, 23:33 عصر
لطفا کمک کنید فوریه........

iman_22a
یک شنبه 03 خرداد 1388, 23:55 عصر
لطفا کمک کنید فوریه........

sqlclient رو باید Import کنین .

mohandesan
دوشنبه 04 خرداد 1388, 00:53 صبح
دوست عزیز ربطی نداشت من ایمپورت کردم مشکل اینه که روی خط


ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
string connectionstring = connections["Connectionstring"].ConnectionString;


خطا میده روی خط دوم گویا اصلا متغیر connectionsرا نمیشناسه خط آبی زیرشه مشکل از کجاست؟؟

iman_22a
دوشنبه 04 خرداد 1388, 01:45 صبح
شرمنده من اشتباه گفتم ، می خواستم بگم Configuration.

اینطور می تونین ConectionString رو از Web.config بر گردونین :



Imports System.Configuration

Public Class Gostaresh
Public Shared ReadOnly Property ConnectionString() As String
Get
Return ConfigurationManager.ConnectionStrings("myConnectionString").ConnectionString
End Get
End Property
End Class

من یه کلاس براش تعریف کردم . شما می تونین هر طور دوست دارین استفاده کنین .

Alireza Orumand
دوشنبه 04 خرداد 1388, 09:21 صبح
سلام

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



cmd.Connection =connectionstring ;

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


cmd.Connection = new SqlConnection();

بعد تازه میتونید مقدار connectionString رو برای این شی با روش بالا ست کنید


cmd.Connection.ConnectionString =connectionstring ;

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

sina_daneshjo
سه شنبه 05 خرداد 1388, 00:04 صبح
کسی اگر می تونه روش های رمز کردن این دستور را در فایل
web.config
ارائه کند عالی می شود چون اگر این فایل را کسی بتونه دانلود کنه و یا اینکه به طریقی به اون دسترسی پیدا کنه به راحتی کلیه اطلاعات ما را می تونه گیر بیاره پس باید روشی داشته باشیم که این اطلاعات را کد کنه و ذخیره کنه البته باید امکان دی کد کردن فقط برای ما امکان پذیر باشه چون بعضی روشها هستند که رمز می کنند ولی اگر یک کاربر فایل را دانلود کنه می تونه به راحتی با کد نویسی فایل را دی
کد کند پس باید این را هم در نظر داشت در ضمن کنترل های
login
داخل 2005 با این فایل کار می کنند که دوباره باید جوری این کار را انجام داد که خطا ندهد یعنی اینکه بطور اتوماتیک قبل از اینکه این کنترل ها بخواهند از رشته اتصال ما استفاده کنند این رشته دی کد شود و مقدار اون گرفته بشود اما چیزی که من باهاش مواجه شدم این بود که این رشته چون کد شده است برای این کنترل ها با معنی نیست و باعث خطا می شود
اگر کسی بتونه روشی ارائه کند که این شرایط را هم داشته باشد عالی می شود

Alireza Orumand
سه شنبه 05 خرداد 1388, 09:46 صبح
سلام


کسی اگر می تونه روش های رمز کردن این دستور را در فایل
web.config
ارائه کند عالی می شود چون اگر این فایل را کسی بتونه دانلود کنه و یا اینکه به طریقی به اون دسترسی پیدا کنه به راحتی کلیه اطلاعات ما را می تونه گیر بیاره
دوست من همونطور که میدونید web.config از اون دسته از فایلهایی هست که مورد حفاظت قرار میگیره و کاربر امکان دسترسی به اون رو نداره. با فرض اینکه اتفاقی که شما در بالا فرمودید رخ بده، یعنی کسی بتونه فایل رو دانلود کنه و به اون دسترسی داشته باشه، دیگه کد کردن اطلاعات اون به درد ما نمیخوره، چون با از بین بردن امنیت سرور قبل از اون به اطلاعات ما دستسی پیدا کرده و دیگه نیازی به زحمت اضافه نداره.
در این مورد به مقاله جناب راد که توی قسمت اعلانات همیمن بخش قرار داره مراجعه کنید. به قول آقای راد:"اگه به سقف خونه تون اطمینان ندارید زیر اون نخوابید".
اما اگر باز هم نیاز دارید که این کار انجام بشه میتونید اینجا (http://www.codeproject.com/KB/aspnet/webconfig.aspx) یه مقاله نسبتا خوب رو ببینید.
موفق باشید.

milade
سه شنبه 05 خرداد 1388, 10:19 صبح
سلام
به نظر من 2 تا کار میشه کرد :

1. Web.Config رو به روش کلید خصوصی رمز کرد که 2 تا مشکل داره :
در یک جابه جایی فایل قابل استفاده نیست سایت اشتراکی دیگه روی هاست راحت میتونه از کانکشن شما استفاده کنه !




حالا اگه اینو میخواید بفرمایید (http://aspnet.4guysfromrolla.com/articles/021506-1.aspx)

2.آقا مگه مجبوری همیشه کانکشن رو توی Web.Config بزاری ؟!
خوب اگه امنیت واست مهمه برو یه DLL بساز و اونجا به عنوان یه مرجع کانکشن رو بگیر !


موفق باشید

احمد سامعی
سه شنبه 05 خرداد 1388, 13:35 عصر
2.آقا مگه مجبوری همیشه کانکشن رو توی Web.Config بزاری ؟!
خوب اگه امنیت واست مهمه برو یه DLL بساز و اونجا به عنوان یه مرجع کانکشن رو بگیر !

سلام. اتفاقاً من دنبال اين مورد هستم:تشویق:
مي شه يك مثال بزنيد با كد البته اگه مي شه يا توضيح، كه نحوه دريافت اطلاعات از DLL براي اين مورد نشون بده

يعني چطوري بايد اين كار كرد ؟
مقاله اي چيزي:خجالت:

milade
سه شنبه 05 خرداد 1388, 14:09 عصر
سلام دوست عزیز

شما یه کلاس میسازی و اون رو به DLL تبدیل میکنی !
حالا هم DLL مطمعن هست و هم اینکه مثل همون کلاسها ازشون استفاده میکنی !
یه جور مثل پابلیش سایت !

موفق باشید

sina_daneshjo
یک شنبه 01 شهریور 1388, 04:39 صبح
با تشکر از آقایان احمد سامعی و
milade
ولی هر دو صفحه ای که لینک داده اید تقریبا یک بحث را دنبا می کنند که هر دو از طریق استاندارد که در همه سایت ها ذکر شده است قسمت مربوطه را رمز نگاری می کنند خوب تا اینجاش خوبه که هر آدم ناشی ای نمی تونه اون را بخونه اما بدیش این است که اگر من رشته کانکشنم را رمز کردم و بر روی سایتی استفاده کردم و شما تونستید به این فایل وب دات کانفیگ دسترسی داشته باشید چون روش رمز کردن را بلدید برعکسش را هم قاعدتاً بلدید چون اگر دقت کنید روش رمز گشایی شان هم تو صفحات لینک داده وجود دارد
2- اما در جواب اینکه چرا از dll استفاده نمی کنم بله اگر بخواهیم از کنترل های login خود دات نت استفاده نکنیم جواب شما کاملا منطقی است و برای مشکل چاره سازه اما در صورتی که بخواهیم از کنترل های login خود دات نت استفاده کنیم لازم است که این تنظیمات را داخل فایل وب دات کانفیگ انجام دهیم و نمی شه که از فایل dll استفاده کنیم البته تا اون جایی که من دیدم
در صورتی که اطلاعات کامل تری در این زمینه دارید که بشه هم از کنترل های لوگین خود دات نت استفاده کرد و هم اینکه از Dll (هر دو با هم و نه یکی از اون ها به تنهایی) ممنون می شوم که راهنمایی کنید