Neviditelná ochrana proti spamu v Orchard Core: Architektura modulu PV.ReCaptchaV3
Jak spojit bezkonkurenční uživatelský zážitek s robustní bezpečností v moderních decoupled aplikacích na platformě .NET.
IHttpClientFactory a nativní integrace do Orchard Workflows jako custom TaskActivity. Administrační rozhraní využívající UI vzory zrychluje konfiguraci globálních interceptorů a AJAX ochrany.
Odstranění tření v konverzním trychtýři
Při vývoji webových aplikací řeším neustálý konflikt: marketing požaduje formuláře bez jakýchkoliv překážek pro maximalizaci konverzí, zatímco infrastruktura čelí nájezdům automatizovaných botů. Tradiční CAPTCHA systémy (luštění obrázků) dramaticky zhoršují UX. Pokud provádím modernizaci legacy systémů na moderní enterprise CMS řešení jakým je Orchard Core, tyto staré přístupy už neobstojí.
Ochrana proti spamu, o které návštěvník ani neví
PV.ReCaptchaV3 je moderní bezpečnostní modul pro Orchard Core, který chrání váš web před nevyžádanou poštou (spamem) a roboty. Znáte ty otravné úkoly, kdy musíte před odesláním formuláře hledat na obrázcích semafory nebo přechody pro chodce? Tomu je nyní konec. Modul využívá nejnovější technologii od Googlu, která funguje 100% neviditelně na pozadí.
Globální ochrana jedním kliknutím
Běžné systémy vyžadují složité vkládání kódů do každého jednotlivého formuláře na vašem webu. Modul přichází s funkcí Global Protection (Globální ochrana). Stačí tuto možnost zapnout v administraci a modul automaticky ochrání naprosto všechny formuláře na celém vašem webu najednou.
* Chcete některé stránky z ochrany vynechat? Modul umožňuje snadné nastavení výjimek pro konkrétní adresy nebo specifické formuláře.Architektura pod kapotou: Validace a Integrace
Abych při tvorbě modulů na míru zajistil maximální výkon, využívám pro komunikaci s Google API striktně asynchronní IHttpClientFactory s implementací resilience. Tady je ukázka jádra verifikační služby, která vyhodnocuje klientský token vůči definovanému Score Threshold:
public class ReCaptchaVerificationService : IReCaptchaVerificationService
{
private readonly IHttpClientFactory _httpClientFactory;
private readonly ISiteService _siteService;
private readonly ILogger<ReCaptchaVerificationService> _logger;
public ReCaptchaVerificationService(IHttpClientFactory httpClientFactory, ISiteService siteService, ILogger<ReCaptchaVerificationService> logger)
{
_httpClientFactory = httpClientFactory;
_siteService = siteService;
_logger = logger;
}
public async Task<bool> ValidateTokenAsync(string token, string remoteIp)
{
var settings = (await _siteService.GetSiteSettingsAsync()).As<ReCaptchaSettings>();
var client = _httpClientFactory.CreateClient("ReCaptchaClient");
var response = await client.PostAsync("https://www.google.com/recaptcha/api/siteverify",
new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "secret", settings.SecretKey },
{ "response", token },
{ "remoteip", remoteIp }
}));
if (!response.IsSuccessStatusCode)
{
_logger.LogWarning("ReCaptcha API komunikace selhala s kódem: {StatusCode}", response.StatusCode);
return false;
}
var json = await response.Content.ReadFromJsonAsync<ReCaptchaResponse>();
// Vyhodnocení asynchronní odpovědi včetně minimálního prahu důvěryhodnosti
return json != null && json.Success && json.Score >= settings.ScoreThreshold;
}
}
Nativní implementace do Orchard Workflows
Kromě automatické globální ochrany poskytuje modul integraci do nativních Workflows v Orchard Core. Vytvořil jsme vlastní TaskActivity, což umožňuje vizuální programování reakcí – např. pokud je detekován bot při registraci uživatele, Workflow odkloní proces a zapíše bezpečnostní alert.
[Category("Security")]
public class ValidateReCaptchaTask : TaskActivity<ValidateReCaptchaTask>
{
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IReCaptchaVerificationService _verificationService;
public ValidateReCaptchaTask(IHttpContextAccessor httpContextAccessor, IReCaptchaVerificationService verificationService)
{
_httpContextAccessor = httpContextAccessor;
_verificationService = verificationService;
}
public override string Name => "ValidateReCaptcha";
public override LocalizedString DisplayText => T["Validate ReCaptcha V3 Token"];
public override IEnumerable<Outcome> GetPossibleOutcomes(WorkflowExecutionContext workflowContext, ActivityContext activityContext)
{
return Outcomes(T["Valid"], T["Invalid"]);
}
public override async Task<ActivityExecutionResult> ExecuteAsync(WorkflowExecutionContext workflowContext, ActivityContext activityContext)
{
var request = _httpContextAccessor.HttpContext?.Request;
var token = request?.Form["g-recaptcha-response"].ToString();
var ip = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress?.ToString();
if (string.IsNullOrEmpty(token)) return Outcomes("Invalid");
var isValid = await _verificationService.ValidateTokenAsync(token, ip);
return Outcomes(isValid ? "Valid" : "Invalid");
}
}
Klíčové funkcionality modulu
Žádné luštění kódů. Návštěvníci mohou plynule odesílat objednávky a zprávy bez jediného přerušení.
Modul dává plnou kontrolu do vašich rukou. Potřebujete, aby administrátorská část nepodléhala ochraně? Stačí přidat výjimku (Excluded Paths).
Podporuje moderní weby, kde se data odesílají dynamicky bez obnovení stránky (včetně Blazor/SPA integrací).
Poznámka z praxe: Při návrhu administrátorského rozhraní pro správu klíčů a prahů skóre využívám robustnosti platformy. Stejně jako prémiové komponenty Syncfusion (např. DataGridy) šetří stovky hodin při vývoji UI na frontendu, vizuální konfigurace modulu v administraci Orchardu radikálně snižuje čas potřebný k nasazení bezpečnostních politik – žádné hardcodování, plná kontrola konfigurace tenantů.
Proč tento modul používat?
| Výhoda | Popis přínosu pro byznys a vývoj |
|---|---|
| Dokonalý uživatelský zážitek | Návštěvníci vašeho webu už nebudou frustrovaní řešením vizuálních hádanek. |
| Čistá e-mailová schránka | Modul spolehlivě odfiltruje nevyžádané obchodní nabídky a spam dříve, než vám dorazí. |
| Rychlé nasazení | Díky funkci globální ochrany máte celý web v bezpečí za pár minut. |
| Plná kontrola a Automatizace | Výjimky, citlivost a reakce (Workflows) máte plně ve svých rukou přes vizuální rozhraní. |
"PV.ReCaptchaV3 funguje jako dokonalý neviditelný vyhazovač vašeho webu. Skutečným zákazníkům s úsměvem otevře dveře, zatímco spamovací roboty vyžene dřív, než vůbec stihnou zaklepat."
Často kladené otázky (FAQ)
Proč pro modernizaci legacy systémů volit Orchard Core?
Orchard Core poskytuje čistou decoupled/headless architekturu postavenou na nejnovějším .NET. Umožňuje bezpečný multi-tenancy provoz a snadnou tvorbu modulů na míru, které izolují složitou byznys logiku (např. Workflows) od prezentační vrstvy.
Lze modul kombinovat s komplexními frontend prvky jako Syncfusion?
Absolutně. Modul má plnou podporu pro AJAX a zachytávání eventů. Pokud na frontendu používáte například bohaté Syncfusion formuláře či editory, modul transparentně vygeneruje token a přiloží jej do hlavičky nebo payloadu asynchronního požadavku bez nutnosti zásahu do Syncfusion komponent.
Zabezpečte svůj web bez kompromisů
Ideální řešení pro majitele webů a e-shopů, kteří chtějí maximální ochranu před spamem bez zbytečného obtěžování svých zákazníků na enterprise úrovni.
Poptat modul / integraci