تزریق SQL: نحوه شروع زمانی که مقدار پارامتر id عددی نیست

نوع استدلال در اینجا باید در تزریق SQL نقش نداشته باشد و سپس این که چگونه پرس و جو SQL در وهله اول شکل گرفته است.

SQL injection سوء استفاده SQL Query که از پارامتر به عنوان یک رشته ایجاد شده است. وب سرور تمام نشانی اینترنتی را به عنوان یک متن پردازش می کند و تمام پارامترها را به عنوان رشته نیز تجزیه می کند. بنابراین حتی زمانی که عدد عددی مانند 1 است، آن را توسط یک سرور وب به عنوان رشته و کد در نظر گرفته می شود و سپس آن را به عنوان یک رشته وارد می کند. این اجازه می دهد تا شما را به وارد کردن کاراکتر های خاص، که ممکن است اگر تنها اعداد مجاز بود ممکن است.

با این حال، ممکن است در پرس و جو SQL وجود دارد. هنگام استفاده از رشته در یک پرس و جو SQL، رشته باید در نقل قول ها ' محصور شود. اعداد می توانند، اما لازم نیست.
شماره: SELECT * از آزمون WHERE id = $ NUMBER؛
String: SELECT * FROM Test WHERE id = '$ TEXT؛'؛

هنگامی که یک رشته در نقل قول بسته است، ابتدا باید ابتدا قاعده را ببندید. بنابراین برای مثال شما می توانید A 'ارسال کنید؛ DROP TABLES *؛ - که به شما می دهد:
SELECT * از تست WHERE id = 'A'؛ جداول قطره *؛ - '.
شما می توانید "پایان دادن به اولین" را ببینید، به طوری که دستور DROP TABLES *؛ به عنوان یک فرمان و نه به عنوان متن در نظر گرفته می شود. – برای نظر در SQL استفاده می شود و در اینجا از آن برای خلاص شدن از بسته شدن ' استفاده می کنیم. در غیر این صورت، یک query SQL نادرست ایجاد می شود.

لطفا توجه داشته باشید که اعداد همچنین می توانند از نقل قول در پرس و جو استفاده کنند، بنابراین با استفاده از این روش فرار ممکن است مفید باشد حتی اگر سایت فقط از اعداد در پارامتر. همچنین، بسته به موتور SQL، انواع دیگر نقل قولها و سپس نقل قول های تک، مانند نقل قول های دوگانه ممکن است قابل استفاده باشد، که می تواند چگونگی فرار از آنها را تغییر دهد.

جاوا اسکریپت – آیا می توان وب سایت با تزریق iframe هک شد؟

وبسایت من هک شده است. من مشاهده می کنم که هکر به سایت من دسترسی پیدا می کند. اگرچه با استفاده از bindparam برای جلوگیری از تزریق sql و محدودیت دسترسی مستقیم برای حمله پشتی ، تغییر هکرها من .php صفحه و اجرای اسکریپت خود را. S / او خط زیر را <iframe width = '1' height = '1' src = 'https: //www.youtube.com/embed/hKdyS_bgUbM؟ rel = 0 & autoplay = 1 & loop = 1 & playlist = RvpkUhrTmxY' در اسکریپت HTML ارسال شده خود.

من شک دارم که من تبدیل به قربانی xss حمله . بنابراین من در مورد احتمال حمله اسکریپت در گوگل جستجو کردم و در مورد تزریق iframe یافتم. و در یک ویدیو یوتیوب گفته شده است – اگر عرض و ارتفاع تویتر شما تغییر شود، تزریق فایرفاکس به راحتی قابل اجرا و هک می شود . آنچه او می گوید؟

من عنصر را از طریق بازرس موزیلا فایرفاکس بازرسی می کنم، عرض و ارتفاع iframe من می تواند در iframe live body تغییر و اعمال شود. آیا او در مورد پرونده من صحبت می کند؟ آیا وب سایت من توسط تزریق iframe هک شده است؟ اگر اینطور باشد، چگونه می توان از آن جلوگیری کرد. وب سایت من هنوز آسيبپذير است ، زيرا من فقط کد index.php خود را حذف کردم و بازگردانی index.php که هک شده بود، هیچ چیز تغییر نکرده است. لطفا کمک کنید.

برنامه وب – در مقابل پیشگیری از تزریق 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 باید انجام دهد (به روش خودش)

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

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

آیا می توان اطلاعات را با استفاده از تزریق sql در دستور select قرار داد؟

اول از همه من آن را در سرور خود برای هدف یادگیری تست کردم.
شرط اینجاست که می خواهم یک ورودی را در جدول تست در پایگاه داده وارد کنم و

 SELECT * FROM `student` WHERE` name 'LIKE'٪ '. $ name. " ٪ '؛

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

من با استفاده از پرس و جوی اتحادیه تلاش می کنم اما کار تمام نشده است. لطفا از من بپرسید که آیا این امکان وجود دارد یا خیر.

این پرسشی است که در phpmyadmin کار می کند اما همان پرس و جو در ظاهر کار نمی کند

 SELECT * FROM `student` WHERE` name 'LIKE'٪ mike٪ ' OR 1 = 1 UNION INSERT INTO test (`id`،` value`) VALUES (36، 'testdata')

تزریق – URL تجزیه امنیت

من نیاز به توسعه یک سرویس که لیست اطلاعات سرور من ذخیره شده در فایل های متنی است.
درخواست من این است که در قالب: AAA9999، که من گربه و grep به. آیا در این کد وجود دارد (که به عنوان مثال دستور تزریق را می پذیرد)؟

 کلاس SinespHash
  def تماس (env)
    req = رک :: درخواست جدید (env)
    license_plate = req.path_info.to_s
    chars = license_plate.to_s.scan (/ [A-Za-z] {3} /) first.to_s.upcase
    اعداد = license_plate.to_s.scan (/ [d] {4} /). first.to_s
    license_plate = "# {chars} # {numbers}"
    اگر @ license_plate.size == 7
      file = "# {chars [0]} / # {chars} .TXT"
      result = `cat # {file} | grep '# {@ license_plate}؛' '.chomp
      [200, {"Content-Type" => "text/html"}, [result]]
    چیز دیگری
      [404, {"Content-Type" => "text/html"}, ['']]
    پایان
  پایان
پایان

اجرای SinespHash.new

در روبی در حال اجرا است. سپس آن را مانند این می خوانم: http://host.com/AAA9999

از قبل سپاسگزاری می کنم.