← Dokumentace WAF / managed-rules / check-for-exposed-credentials
Konfigurace kontrol odhalených přihlašovacích údajů přes API
Konfigurace kontrol odhalených přihlašovacích údajů pomocí Rulesets API. Můžete provést následující:
- Nasazení sady pravidel Cloudflare Exposed Credentials Check Managed Ruleset.
- Vytvoření vlastních pravidel pro kontrolu odhalených přihlašovacích údajů.
Pokud používáte Terraform, přečtěte si Konfigurace kontrol odhalených přihlašovacích údajů pomocí Terraformu.
Vytvoření vlastního pravidla pro kontrolu odhalených přihlašovacích údajů
Pravidla, která kontrolují odhalené přihlašovací údaje, můžete vytvořit pomocí Rulesets API. Tato pravidla zahrňte do vlastní sady pravidel, kterou musíte vytvořit na úrovni účtu, a poté vlastní sadu pravidel nasaďte do fáze.
Pravidlo kontrolující odhalené přihlašovací údaje vytvoří shodu, pokud jsou pravdivé jak výraz pravidla, tak výsledek kontroly odhalených přihlašovacích údajů.
Chcete-li ve vlastním pravidle kontrolovat odhalené přihlašovací údaje, zahrňte exposed_credential_check objekt v definici pravidla. Tento objekt musí mít následující vlastnosti:
username_expression, Výraz, který vybírá ID uživatele použité při kontrole přihlašovacích údajů. Tato vlastnost může mít až 1024 znaků.password_expression, Výraz, který vybírá heslo použité při kontrole přihlašovacích údajů. Tato vlastnost může mít až 1024 znaků.
Můžete použít exposed_credential_check objekt v pravidlech s jednou z následujících akcí: rewrite, log, block, js_challenge (Non-Interactive Challenge), nebo challenge (Interactive Challenge). Cloudflare doporučuje používat kontroly odhalených přihlašovacích údajů pouze s následujícími akcemi: rewrite a log.
Chcete-li vytvořit a nasadit vlastní sadu pravidel, postupujte podle pracovního postupu popsaného v Práce s vlastními sadami pravidel.
Příklad A
Tento POST ukázkový požadavek vytvoří novou vlastní sadu pravidel s pravidlem, které kontroluje odhalené přihlašovací údaje. Pravidlo je vyhodnoceno jako shoda, pokud odpovídá jak výraz pravidla, tak exposed_credential_check výsledky jsou true. Při shodě pravidlo zaznamená požadavek s odhalenými přihlašovacími údaji do protokolů Cloudflare.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Account WAF WriteAccount Rulesets Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Custom Ruleset A",
"kind": "custom",
"description": "This ruleset includes a rule checking for exposed credentials.",
"rules": [
{
"action": "log",
"description": "Exposed credentials check on login.php page",
"expression": "http.request.method == \"POST\" && http.request.uri == \"/login.php\"",
"exposed_credential_check": {
"username_expression": "url_decode(http.request.body.form[\"username\"][0])",
"password_expression": "url_decode(http.request.body.form[\"password\"][0])"
}
}
],
"phase": "http_request_firewall_custom"
}'Odpověď vrací vytvořenou sadu pravidel. Všimněte si přítomnosti exposed_credential_check objekt v definici pravidla.
{
"result": {
"id": "<CUSTOM_RULESET_ID>",
"name": "Custom Ruleset A",
"description": "This ruleset includes a rule checking for exposed credentials.",
"kind": "custom",
"version": "1",
"rules": [
{
"id": "<CUSTOM_RULE_ID>",
"version": "1",
"action": "log",
"description": "Exposed credentials check on login.php page",
"expression": "http.request.method == \"POST\" && http.request.uri == \"/login.php\"",
"exposed_credential_check": {
"username_expression": "url_decode(http.request.body.form[\"username\"][0])",
"password_expression": "url_decode(http.request.body.form[\"password\"][0])"
},
"last_updated": "2021-03-19T10:48:04.057775Z",
"ref": "<CUSTOM_RULE_REF>",
"enabled": true
}
],
"last_updated": "2021-03-19T10:48:04.057775Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}Ukázka používá url_decode() funkci, protože pole v těle požadavku (dostupná v http.request.body.form) jsou kódovány pomocí URL kódování, pokud je typ obsahu application/x-www-form-urlencoded.
Po vytvoření vlastní sady pravidel ji nasaďte do fáze, aby se spustila. K nasazení vlastní sady pravidel budete potřebovat ID sady pravidel. Další informace najdete v Nasazení vlastní sady pravidel.
Příklad B
Tento POST ukázkový požadavek vytvoří novou vlastní sadu pravidel s pravidlem, které kontroluje odhalené přihlašovací údaje v odpovědích JSON. Pravidlo je vyhodnoceno jako shoda, pokud odpovídá jak výraz pravidla, tak exposed_credential_check výsledky jsou true. Při shodě pravidlo přidá Exposed-Credential-Check HTTP hlavičku k požadavku s hodnotou 1.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Account WAF WriteAccount Rulesets Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Custom Ruleset B",
"kind": "custom",
"description": "This ruleset includes a rule checking for exposed credentials.",
"rules": [
{
"action": "rewrite",
"action_parameters": {
"headers": {
"Exposed-Credential-Check": {
"operation": "set",
"value": "1"
}
}
},
"description": "Exposed credentials check on login endpoint with JSON body",
"expression": "http.request.method == \"POST\" && http.request.uri == \"/login.php\" && any(http.request.headers[\"content-type\"][*] == \"application/json\")",
"exposed_credential_check": {
"username_expression": "lookup_json_string(http.request.body.raw, \"username\")",
"password_expression": "lookup_json_string(http.request.body.raw, \"password\")"
}
}
],
"phase": "http_request_firewall_custom"
}'Odpověď vrací vytvořenou sadu pravidel. Všimněte si přítomnosti následujících prvků v definici pravidla:
-
rewritejako akci. -
action_parametersobjekt konfigurující HTTP hlavičku přidávanou k požadavkům s odhalenými přihlašovacími údaji. -
exposed_credential_checkobjekt.
{
"result": {
"id": "<CUSTOM_RULESET_ID>",
"name": "Custom Ruleset B",
"description": "This ruleset includes a rule checking for exposed credentials.",
"kind": "custom",
"version": "1",
"rules": [
{
"id": "<CUSTOM_RULE_ID>",
"version": "1",
"action": "rewrite",
"action_parameters": {
"headers": {
"Exposed-Credential-Check": {
"operation": "set",
"value": "1"
}
}
},
"description": "Exposed credentials check on login endpoint with JSON body",
"expression": "http.request.method == \"POST\" && http.request.uri == \"/login.php\" && any(http.request.headers[\"content-type\"][*] == \"application/json\")",
"exposed_credential_check": {
"username_expression": "lookup_json_string(http.request.body.raw, \"username\")",
"password_expression": "lookup_json_string(http.request.body.raw, \"password\")"
},
"last_updated": "2022-03-19T12:48:04.057775Z",
"ref": "<CUSTOM_RULE_REF>",
"enabled": true
}
],
"last_updated": "2022-03-19T12:48:04.057775Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}Po vytvoření vlastní sady pravidel ji nasaďte do fáze, aby se spustila. K nasazení vlastní sady pravidel budete potřebovat ID sady pravidel. Další informace najdete v Nasazení vlastní sady pravidel.