C# 提高TCHA安全性

C# 提高TCHA安全性,c#,asp.net,asp.net-mvc,recaptcha,C#,Asp.net,Asp.net Mvc,Recaptcha,我在我的应用程序中使用google recaptcha v2,我会将其集成到客户端。 这是我的代码 var onloadCallback=函数(){ grecaptcha.render('recaptcha'{ “站点密钥”:“6Lc_qmcuaaaajw_kalwjxcvxccvxcvxc”, “回调”:reCaptchaCallback, }); }; var reCaptchaCallback=函数(响应){ 如果(响应!=''){ 控制台日志(响应); } }; 函数getRecap

我在我的应用程序中使用google recaptcha v2,我会将其集成到客户端。 这是我的代码


var onloadCallback=函数(){
grecaptcha.render('recaptcha'{
“站点密钥”:“6Lc_qmcuaaaajw_kalwjxcvxccvxcvxc”,
“回调”:reCaptchaCallback,
});
};
var reCaptchaCallback=函数(响应){
如果(响应!=''){
控制台日志(响应);
}
};
函数getRecaptShares(){
var message='请选中复选框';
if(typeof(grecaptcha)!=“未定义”){
var response=grecaptcha.getResponse();
(response.length==0)?(消息='Captcha验证失败'):(消息='';
}
$('reCaptchaLblMsg').html(message.css('color','red');
返回!(response.length==0)
}
submitHandler:函数(表单){
//调用google recaptcha验证
if(getRecaptShares()){
$('.spinner holder').css('display','block');
$(“#myAjaxRegisterModal2输入[type='submit']”).val(“保存…”).attr('disabled','disabled');
var uu RequestVerificationToken=$('[name=“u RequestVerificationToken”]')。val();
变量寄存器数据={
__RequestVerificationToken:u RequestVerificationToken,
ProfileCreatedFor:$('#ddlProfileCreatedFor').val(),
GroomBrideName:$('#txtName').val(),
Mobile:$('#txtMobile').val(),
EmailID:$('#txtEmail').val(),
高度:$('#ddlHeight').val(),
性别:$(“输入[name='Gender']:已选中”).val(),
MaritalStatus:$('#ddlMaritalStatus').val(),
DOBMonth:$('#ddlmount').val(),
DOBDate:$('#ddlDate').val(),
DOBYear:$('#ddlYear').val(),
状态:$('#ddlUserState').val(),
城市:$('#ddlCity').val(),
节:$('#ddlUserSection').val(),
DivisionText:$('#DivisionText').val(),
密码:$('ConfirmPassword').val()
}
//表单提交();
$.ajax({
url:“/Home/RegisterNewMemberByJson”,
类型:“POST”,
数据:RegisterData,
数据类型:“json”,
成功:功能(数据){
如果(数据=“错误”){
window.location.href=“/Home/Index”;
}
else if(数据==true){
$('#myAjaxRegisterModal2').modal('hide');
registerpoup();
}
否则{
$('.spinner holder').hide();
$(“#myAjaxRegisterModal2输入[type='submit']”)val(“保存”).removeAttr(“禁用”);
$('#ageErrorMsg')。文本(数据);
}
}
});
}
}

现在我可以回答我自己的问题了。我犯了一个愚蠢的错误,我没有通过ajax发送响应,而是试图通过[g-recaptcha-response]将响应输入到控制器上的方法中

这是更新后的代码

 public JsonResult RegisterNewMemberByJson(ReligionAndEthinicityModel RegisterData)
    {
        if (ModelState.IsValid)
        {
            try
            {
                bool captchaIsvalid = IsReCaptchValid(RegisterData.cResponse);
                if (captchaIsvalid)
                {


public bool IsReCaptchValid(string cResponse)
    {
        var result = false;
        var captchaResponse = cResponse;
        var secretKey = Convert.ToString(ConfigurationManager.AppSettings["RecaptchaKey"]);
        var apiUrl = "https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}";
        var requestUri = string.Format(apiUrl, secretKey, captchaResponse);
        var request = (HttpWebRequest)WebRequest.Create(requestUri);

        using (WebResponse response = request.GetResponse())
        {
            using (StreamReader stream = new StreamReader(response.GetResponseStream()))
            {
                JObject jResponse = JObject.Parse(stream.ReadToEnd());
                var isSuccess = jResponse.Value<bool>("success");
                result = (isSuccess) ? true : false;
            }
        }
        return result;
    }
public JsonResult RegisterNewMemberByJson(religion和ethinicitymodel RegisterData)
{
if(ModelState.IsValid)
{
尝试
{
bool captchaIsvalid=IsReCaptchValid(RegisterData.response);
如果(captchaIsvalid)
{
公共布尔值IsReCaptchValid(字符串对应)
{
var结果=假;
var captchaResponse=应答;
var secretKey=Convert.ToString(ConfigurationManager.AppSettings[“RecaptchaKey]”);
var apirl=”https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}”;
var requestUri=string.Format(apirl、secretKey、captchaResponse);
var request=(HttpWebRequest)WebRequest.Create(requestUri);
使用(WebResponse=request.GetResponse())
{
使用(StreamReader stream=newstreamreader(response.GetResponseStream()))
{
JObject jResponse=JObject.Parse(stream.ReadToEnd());
var isSuccess=jResponse.Value(“成功”);
结果=(isSuccess)?真:假;
}
}
返回结果;
}