在Java Server Pages (JSP) 中集成 reCAPTCHA v3 是一个有效的方式来增强你的网站安全性,特别是用于防止自动化的恶意软件攻击和滥用。reCAPTCHA v3 通过分析用户行为来评分,而不会中断用户的交互流程。下面是如何在JSP项目中集成reCAPTCHA v3的步骤:
在你的JSP文件中,你需要在 <head>
标签中包含 Google reCAPTCHA 的JavaScript库,并在需要保护的表单中实现。
<!DOCTYPE html>
<html>
<head>
<title>reCAPTCHA v3 Demo</title>
<script src="https://www.google.com/recaptcha/api.js?render=你的站点密钥"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('你的站点密钥', {action: 'homepage'}).then(function(token) {
// 将token添加到表单中
document.getElementById('recaptchaResponse').value = token;
});
});
</script>
</head>
<body>
<form action="submit.jsp" method="POST">
<!-- 其他表单元素 -->
<input type="hidden" name="recaptcha_response" id="recaptchaResponse">
<input type="submit" value="提交">
</form>
</body>
</html>
在你的服务器端代码(例如 submit.jsp
)中,你需要验证 reCAPTCHA 响应。这通常涉及到向 Google 的服务器发送一个POST请求。
<%@ page import="java.io.*,java.net.*,javax.net.ssl.*"%>
<%
String secretKey = "你的密钥";
String response = request.getParameter("recaptcha_response");
String url = "https://www.google.com/recaptcha/api/siteverify",
params = "secret=" + secretKey + "&response=" + response;
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(params);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 将响应输出到控制台
System.out.println("Response: " + response.toString());
// 根据需要处理响应
%>
领取专属 10元无门槛券
手把手带您无忧上云