CodeShot
Juniorسختی 2 از ۵· در 25٪ مصاحبه‌های این حوزه پرسیده شده

چرا کوئری‌های Dapper باید همیشه پارامتری نوشته شوند؟

نشان کردن

پاسخ کوتاه

برای جلوگیری از SQL Injection — پارامترها به‌عنوان داده به دیتابیس ارسال می‌شوند، نه بخشی از ساختار دستور SQL.

پاسخ کامل

اگر ورودی کاربر مستقیماً با Concatenation به رشتهٔ SQL اضافه شود، مهاجم می‌تواند ساختار کوئری را تغییر دهد؛ Dapper با @Param این ریسک را از بین می‌برد چون مقدار همیشه به‌عنوان پارامتر جدا ارسال می‌شود.

اشتباه رایج

ساخت دستی رشتهٔ SQL با Concatenation ورودی کاربر به‌جای استفاده از پارامتر @.