Post by Mostafa Samir Said

Full-Stack Developer | ASP.NET Core | Angular | Clean Architecture | RESTful APIs | Scalable Solutions

اشتغلت على مئات الـ Stored Procedures. وشفت بسرعة إزاي الـ SP اللي اتعملت عشان الـ Performance ممكن تبقى ثغرة أمنية كبيرة. أكتر Pattern شوفته في Legacy .NET Codebases بيبقى بالشكل ده: EXEC('SELECT * FROM Users WHERE Name = ''' + @name + '''') Dynamic SQL جوه Stored Procedure. شغال عادي جدًا. مفيش Errors. لكن Injectable بالكامل. اللي بعمله بدل كده: Parameterized Queries دايمًا، حتى جوه الـ Stored Procedures. استخدام sp_executesql بدل EXEC لو مضطر أكتب Dynamic SQL. تطبيق مبدأ Least Privilege على الـ Database User، بحيث ياخد الصلاحيات اللي محتاجها بس. Input Validation في الـ API Layer قبل ما أي Data توصل للـ Database. في مشروع استلمناه، الـ SQL Server Login كان واخد db_owner. يعني SQL Injection واحدة كانت كفاية إنها تعمل Drop Tables أو توصل لبيانات حساسة أو تنفذ أي حاجة تقريبًا على الـ Database. قعدنا حوالي أسبوعين بس بنراجع ونظبط الـ Permissions ونقفل الثغرات دي. الـ Performance والـ Security مش ضد بعض. مفيش سبب يخليك تضحي بواحدة عشان التانية. لو التصميم من البداية صح، تقدر تحقق الاتنين مع بعض. #SQLServer #SQLInjection #DotNET #AppSec #BackendSecurity #SoftwareSecurity