رفتن به محتوا

HTTPQL و StreamQL ​

Ogma برای فیلتر کردن تاریخچهٔ HTTP، ترافیک WebSocket، نتایج خودکارسازی و نماهای مرتبط، از زیرمجموعه‌ای از یک زبان پرس‌وجوی سازگار با Caido استفاده می‌کند.

نحو ​

پرس‌وجوها از شرط‌هایی تشکیل می‌شوند که با AND و OR به هم متصل شده‌اند.

text
req.host:example.com AND resp.code:200

پرانتزها عبارت‌ها را گروه‌بندی می‌کنند:

text
(req.path.cont:"/api/" OR req.path.cont:"/graphql") AND resp.code.gte:400

از کامنت‌ها پشتیبانی می‌شود:

text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500
text
/* focus on login */
req.path.cont:"login"

عملگرها ​

عملگرمعنا
:برابری یا تطبیق پیش‌فرض، بسته به نوع فیلد
.eq:برابر است
.ne:برابر نیست
.cont:شامل است، بدون حساسیت به بزرگی و کوچکی حروف
.ncont:شامل نیست، بدون حساسیت به بزرگی و کوچکی حروف
.cs.cont:شامل است، با حساسیت به بزرگی و کوچکی حروف
.cs.ncont:شامل نیست، با حساسیت به بزرگی و کوچکی حروف
.like:تطبیق الگو به شیوهٔ SQL
.nlike:عدم تطبیق الگو به شیوهٔ SQL
.regex:تطبیق عبارت منظم
.nregex:عدم تطبیق عبارت منظم
.lt:کمتر از
.lte:کمتر از یا برابر با
.gt:بیشتر از
.gte:بیشتر از یا برابر با
.existsهدر وجود دارد؛ از req.header["Name"].value.exists یا معادل آن برای پاسخ استفاده کنید

مثال‌های HTTP ​

پیدا کردن ترافیک API:

text
req.path.cont:"/api/"

پیدا کردن خطاهای سرور:

text
resp.code.gte:500

پیدا کردن پاسخ‌های بزرگ:

text
resp.len.gt:100000

پیدا کردن پاسخ‌های JSON:

text
resp.header["content-type"].value.cont:"application/json"

پیدا کردن درخواست‌های دارای کوکی:

text
req.header["cookie"].value.exists

پیدا کردن ترافیکی که با رهگیری یا تطبیق و جایگزینی تغییر کرده است:

text
req.modified.eq:true

پیدا کردن مسیرهای احتمالی مدیریت:

text
req.path.cont:"/admin" OR req.path.cont:"/manage"

پیدا کردن ترافیک بازپخش یا خودکارسازی:

text
source:replay OR source:automate

مثال‌های جریان ​

StreamQL همین شیوهٔ پرس‌وجو را در نماهای WebSocket و جریان به کار می‌گیرد.

پیدا کردن پیام‌های WebSocket حاوی فیلد توکن:

text
ws.raw.cont:"token"

پیدا کردن پیام‌های ارسالی از سرور به کلاینت:

text
ws.direction.eq:"To Client"

پیدا کردن پیام‌های شبیه JSON:

text
ws.raw.cont:"{" AND ws.raw.cont:"}"

فیلترهای ذخیره‌شدهٔ کاربردی ​

نامپرس‌وجو
خطاهای APIreq.path.cont:"/api/" AND resp.code.gte:400
نقاط پایانی احراز هویتreq.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"
ترافیک JSONresp.header["content-type"].value.cont:"json"
متدهای قابل توجهreq.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE
اسرار احتمالیresp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"

محدودیت‌ها ​

برای قابل پیش‌بینی ماندن فیلترها، Ogma پیچیدگی پرس‌وجو را محدود می‌کند:

  • حداکثر عمق عبارت‌های تودرتو: 16.
  • حداکثر تعداد شرط‌ها: 64.

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

نرم‌افزار اختصاصی. تمامی حقوق محفوظ است.