דילוג לתוכן

HTTPQL ו-StreamQL ​

Ogma משתמש בתת-קבוצה של שפת שאילתות תואמת Caido לסינון היסטוריית HTTP, תעבורת WebSocket, תוצאות אוטומציה ותצוגות קשורות.

תחביר ​

שאילתות מורכבות מתנאים המחוברים באמצעות 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.

אם שאילתה נעשית מורכבת מדי, פצלו אותה למסננים שמורים או השתמשו בחיפוש לצורך חקירה רחבה יותר.

תוכנה קניינית. כל הזכויות שמורות.