برنامه وب – در مقابل پیشگیری از تزریق SQL – اجرای SQL از راه دور

Background

ما می دانیم که SQL Injection شاید امروزه موضوع شایع ترین سایت های وب است. استراتژی های کاهش خطرات به خوبی شناخته شده است. اما آیا این تنها تقویت یک معماری نرم افزاری ناقص / ناکارآمد است؟

برای من، کار با MS SQL Server که دارای مجوز محدود به کاربران بود، به این معنی بود که مجوز باید به لایه کاربرد وب منتقل شود تا هزینه مقرون به صرفه باشد. البته، من همچنین می خواستم یک API RESTful ارائه دهم که SQL Server به طور مستقیم در RDBMS قرار نگرفته است.

در تجربه من، یک رابط RESTful ایجاد می کند که دیدگاه هایی را دریافت می کند که پرس و جو و پارامتر را تعریف می کنند. اینها به SQL تبدیل می شوند که بر روی RDBMS اجرا می شود. بنابراین API های وب به این ترتیب پروتکل سریال سازی غیر مستقیم برای SQL نیست؟ (به جز ملاحظات منطق کسب و کار در حال حاضر)

بنابراین، اگر ما کل مشکل را معکوس کنیم؟ اگر بجای قرار دادن پارامترهای دقت پارامترهای پرس و جو / نمایش های استاتیک، ما به مشتری اجازه دادیم SQL کامل را به سرور منتقل کنیم؟


سوال

فرض کنید که یک چارچوب ایمن توسعه داده شده برای اجرای بیرونی SQL:

  • امن ترین
  • نسبتا آسان و مفید برای ساخت و یا پیدا کردن / آیکون ابزار کتابخانه
  • سازنده برای نرم افزار های وب است که آسان تر برای ساخت (بیشتر از نقطه StackOverflow)

در حالت ایده آل، پاسخ موفقیت آمیز من فرضیه ها، در حالی که با توجه به روش های به ظاهر موفقیت آمیز برای اجرای این. با این حال، انتظار دارم که پاسخ موفقیتآمیز از تایید خوبی از این ایده، با اشاره به گفتمان و نمونههای خارجی، ارتباط با چارچوبها و طرحهای موجود و شاید برخی از ایدههای طراحی جدید در سطح بالا، حاصل شود.


جزئیات بیشتر و ایده هایی که چگونه می تواند کار کند:

  • طرف سرور می تواند رشته بیانیه SQL را به طور کامل به یک مدل حافظه پرس و جو تجزیه و تحلیل کند، امکان بررسی مجدد سازمانی را فراهم می کند، و نیز درونگرایی پارامتر مناسب، در نتیجه حذف SQL پلاگین تزریق
  • رابط وب مستقیم به RDBMS که قبلا تجزیه کننده SQL، کاربران، نقش ها و امنیت موجودیت را شامل می شود (اگر نه بصورت مستقیم از طریق ردیف ها یا از طریق نمایش ها).
  • یک مدل قابل خواندن از ماشین SQL که آسان تر است تجزیه شده توسط middleware.
  • بحث از این واقعیت است که SQL مانند JSON، فرمت سریال سازی است. این انسان قابل خواندن است. SQL توضیح خاصی را تعریف می کند که RDBMS باید انجام دهد (به روش خودش)

تأثیر تایید نظریه من

اگر این درست باشد، مشتریان ضخیم وب با لایه کسب و کار خود فعال خواهند شد. بنابراین چنین طبقه ای از انواع سیستم های نرم افزاری بیشتر توجه، در نظر گرفتن و توسعه را دریافت می کند. من معتقدم که این نوع سیستم ها انتخاب خوبی برای پروژه های کوچک برای توسعه سریع و نمونه سازی است.