PDA

View Full Version : استفاده از روش مقدار دهی پارامترها توسط (ParametrName@) چه مزایایی داره؟



sahel65
چهارشنبه 04 آبان 1390, 09:15 صبح
سلام دوستان؛
برای مقدار دهی به پارامترهای خودمون اگه از این روش بعنوان مثال


"insert into myTbl(name,family) values (@Name,@value)

استفاده کنیم، چه مزیتهایی داره؟ آیا واقعا برای جلوگیری از حملات sql injection هم مفید و مثمر ثمر هستش؟ اگه آره به چه علت؟
چون من شنیدم که میگن مثل دستور فوق اگه کدنویسی کنیم از این روش که مقادیر رو بهم میچسبونیم خیلی بهتر و مفیدتره.



insert into mytbl(name,family) values ('"+txtname.text+"','"+txtfamily.text+"')"

moferferi
چهارشنبه 04 آبان 1390, 10:48 صبح
سلام
اصلا مدل ado.net منقرض شده.
شما از linq یا ورزن جدیش مدل ado.net entity model استفاده کن.
البته این پیشنهاد منه.اگه هنوز دارین از روش های دات نت 2 استفاده میکنید توی وب و برنامه نویسی عقب میافتین.
در مدل linq دیگه مسئله sql injection وجو نداره

sahel65
چهارشنبه 04 آبان 1390, 11:14 صبح
دوست عزیز میشه در این خصوص یه توضیحی بدی؟ اصلا linq نحوه کارش چجوریه؟ اگه خوبه پس چرا باز اکثر دوستا از همون روش اول استفاده می کنن؟

Saman Hashemi
چهارشنبه 04 آبان 1390, 11:21 صبح
اصلا مدل ado.net منقرض شده.
استفاده از ORM ها خوبه اما خیلی جاها هست که امکان استفاده از اون فراهم نیست باید به روش خودتون عمل کنید که فقط میمونه ADO.net منقرض شده و این دلیل عقب افتادگی نمیشه دوست عزیز...!

آیا واقعا برای جلوگیری از حملات sql injection هم مفید و مثمر ثمر هستش؟ اگه آره به چه علت؟
شما سعی کن به جای این شیوه که واقعا نگهداری سخت میکنه به دنبال استفاده از Stored Procedure باشی اما جواب سوالت بله جلوگیری میکنه ...!

moferferi
چهارشنبه 04 آبان 1390, 11:23 صبح
اینکه هنوز بعضی ها از همون روش های قبلی استفاده میکنن بستگی به خودشون داره.شاید حال و حوصله یاد گرفتن روش های جدید را ندارن.
در مورد نحوه کار هم که مسلما توی این تایپیک نمیشه توضیح داد.بخش جداگانه ای توی سایت مربوط به این موضوع هست.که توش تایپیک ها و pdf اموزشی زیادی موجوده.
اما من با توجه به پستی که گذاشتین حدث زدم تازه شروه به کار کردین.پس بهتره از روش های جدید استفاده کنید

Saman Hashemi
چهارشنبه 04 آبان 1390, 11:32 صبح
همیشه سریع رفتن به سمت تکنولوژی های جدید مایکروسافت خوب نیست چون امکان داره در VS بعدی وجود نداشته باشه یا بحث پشتیبانی منتفی بشه مانند linQToSql که چند جا خوندم دیگه توسعه پیدا نمیکنه در عوضش EntityFramework گسترش میده یا داستان های silverlight، پس نتیجه اخلاقی توی پروژه هایی که قرار سالها کار کنه و هزینه زیادی بابتش میشه بهت پیشنهاد میکنم از همون روش قدیمی استفاده کن چون احتمال داره یه روز همچین بلایی سر پروژه بیاد...!
بعدم در linQ کارهای عجیب و غریبی انجام نشده که کسی نتونه خودش یه دونه درست کنه حتی میتونید یه نگاهی به linQ پروژه Mono بندازید عزیزی میگفت کیفیت بهترم هست...!

sahel65
چهارشنبه 04 آبان 1390, 12:02 عصر
به دنبال استفاده از Stored Procedure باشی اما جواب سوالت بله جلوگیری میکنه ...!
از شما دوستان عزیزم ممنونم، چشم سعی می کنم حتما دنبال sp باشم، البته طبق جستجوهایی که کردم دیدم بهتره ولی گفتم این رو هم سوال بپرسم تا از نظرات شما استفاده کنم.

حدث زدم تازه شروه به کار کردین
حدستون تقریبا درسته دوست عزیز!:گریه:

میلاد قاضی پور
چهارشنبه 04 آبان 1390, 12:22 عصر
در مدل linq دیگه مسئله sql injection وجو نداره

اتفاقا تابع executeQuery در linq برای علاقمندان به حملات sql injection هست :)
http://barnamenevis.org/showthread.php?303930-%D8%AD%D9%85%D9%84%D9%87-sql-injection-%D8%AF%D8%B1-%D8%B5%D9%88%D8%B1%D8%AA-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-linq