هل تقدم ExecuteCommand LINQ في الحماية من هجمات حقن SQL؟

StackOverflow https://stackoverflow.com/questions/157924

  •  03-07-2019
  •  | 
  •  

سؤال

ولقد حصلت على الحالة التي أنا بحاجة إلى استخدام أسلوب ExecuteCommand LINQ لتشغيل إدراج.

وشيء من هذا القبيل (المبسطة لأغراض هذا السؤال):

object[] oParams = { Guid.NewGuid(), rec.WebMethodID };

TransLogDataContext.ExecuteCommand (
"INSERT INTO dbo.Transaction_Log (ID, WebMethodID) VALUES ({0}, {1})",
oParams);

والسؤال هو إذا كان هذا هو حقن SQL الإثبات في نفس الطريق استعلامات بمعلمات هي؟

هل كانت مفيدة؟

المحلول

وفعلت بعض البحوث، ولقد وجدت هذا:

<اقتباس فقرة>   

في بلدي اختبار بسيط، يبدو   المعلمات التي تم تمريرها في   ExecuteQuery وExecuteCommand   الأساليب هي SQL مشفرة تلقائيا   على أساس القيمة التى يتم توريدها. وبالتالي   إذا كنت تمر في سلسلة مع '   حرف، فإنه سيتم تلقائيا SQL   الهروب منه إلى ''. وأعتقد أن ما شابه   يستخدم السياسة لأنواع البيانات الأخرى   مثل DateTimes، الكسور العشرية، وغيرها.

<وأ href = "http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx" يختلط = "نوفولو noreferrer"> http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx <ر > (لقد انتقل لأسفل للعثور عليه)

وهذا يبدو غريبا بعض الشيء بالنسبة لي - أدوات. صافي معظم أخرى تعرف أفضل من أي شيء "الهروب SQL". أنها تستخدم معلمات الاستعلام الحقيقية بدلا من ذلك.

نصائح أخرى

وLINQ إلى SQL يستخدم <م> exec_sql مع المعلمات، والذي هو أكثر أمانا بكثير من وصل إلى سلسلة الاستعلام المخصص. يجب أن تكون آمنة كما againt حقن SQL مثل استخدام SqlCommand وجمع PARAMATERS لها (في الواقع، هو على الأرجح ما LINQ إلى SQL يستخدم داخليا). ثم مرة أخرى، كيف هي آمنة <م> أن

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top