← Dokumentace WAF / managed-rules / check-for-exposed-credentials
Konfigurace kontrol odhalených přihlašovacích údajů přes API
Nakonfigurujte kontroly odhalených přihlašovacích údajů pomocí Rulesets API. Můžete provést následující:
- Nasazení Cloudflare Exposed Credentials Check Managed Ruleset.
- Vytvoření vlastních pravidel kontrolujících odhalené přihlašovací údaje.
Pokud používáte Terraform, viz Konfigurace kontrol odhalených přihlašovacích údajů pomocí Terraformu.
Vytvoření vlastního pravidla kontrolujícího odhalené přihlašovací údaje
Pravidla kontrolující odhalené přihlašovací údaje můžete vytvářet pomocí Rulesets API. Zahrňte tato pravidla 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 má shodu, když jsou pravdivé jak výraz pravidla, tak výsledek kontroly odhalených přihlašovacích údajů.
Ke kontrole odhalených přihlašovacích údajů ve vlastním pravidle 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.
Vlastní sadu pravidel vytvoříte a nasadíte podle postupu popsaného v Práce s vlastními sadami pravidel.
Příklad A
Tento POST příklad požadavku vytvoří novou vlastní sadu pravidel s pravidlem, které kontroluje odhalené přihlašovací údaje. Pravidlo má shodu, pokud jsou splněny jak výraz pravidla, tak i exposed_credential_check výsledek jsou true. Při shodě pravidlo zaloguje požadavek s odhalenými přihlašovacími údaji do logů Cloudflare.
Požadovaná oprávnění API tokenu
Alespoň jedno z následujících oprávnění tokenu je vyžadováno: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": []
}Příklad používá url_decode() funkci, protože pole v těle požadavku (dostupná v http.request.body.form) jsou URL-encoded, když je content type application/x-www-form-urlencoded.
Po vytvoření vlastní sady pravidel ji nasaďte do fáze, aby se vykonávala. K nasazení vlastní sady pravidel budete potřebovat její ID. Více informací najdete v Nasazení vlastní sady pravidel.
Příklad B
Tento POST příklad požadavku vytvoří novou vlastní sadu pravidel s pravidlem kontrolujícím odhalené přihlašovací údaje v odpovědích JSON. Pravidlo má shodu, pokud jsou splněny jak výraz pravidla, tak i exposed_credential_check výsledek 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ň jedno z následujících oprávnění tokenu je vyžadováno: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:
- The
rewriteakci. - The
action_parametersobjekt konfigurující HTTP hlavičku přidávanou k požadavkům s odhalenými přihlašovacími údaji. - The
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 vykonávala. K nasazení vlastní sady pravidel budete potřebovat její ID. Více informací najdete v Nasazení vlastní sady pravidel.