diff --git a/src/app/(main)/page.tsx b/src/app/(main)/page.tsx index cb6496e..5f471f3 100644 --- a/src/app/(main)/page.tsx +++ b/src/app/(main)/page.tsx @@ -267,9 +267,34 @@ export default async function Home() { - {/* Google reCAPTCHA Widget */} -
- + {/* reCAPTCHA v3 implementation */} + + + diff --git a/src/app/api/contact/route.ts b/src/app/api/contact/route.ts index c200d4a..60133f4 100644 --- a/src/app/api/contact/route.ts +++ b/src/app/api/contact/route.ts @@ -34,8 +34,9 @@ export async function POST(request: Request) { const verifyData = await verifyResult.json(); - if (!verifyData.success) { - return NextResponse.redirect(new URL('/?status=error&msg=reCAPTCHA verification failed. Please try again.#contact', request.url)); + if (!verifyData.success || (verifyData.score !== undefined && verifyData.score < 0.5)) { + console.error('reCAPTCHA failed:', verifyData); + return NextResponse.redirect(new URL('/?status=error&msg=reCAPTCHA verification failed (bot behavior detected). Please try again.#contact', request.url)); } // 2. Rate Limiting via Supabase