· 7 years ago · Feb 14, 2018, 10:23 PM
1<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/Login.Master" AutoEventWireup="true" CodeBehind="LoginRetail.aspx.cs" Inherits="OnlineSpecialOrders.Forms.LoginRetail" %>
2<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
3<script src="https://www.google.com/recaptcha/api.js" async defer type="text/javascript"></script>
4<script type="text/javascript">
5 function onSubmit() {
6 window.location.href = '~/MainPage.aspx';
7 }
8</script>
9<link rel="stylesheet" type="text/css" href="../Styles/styleSO.css" />
10</asp:Content>
11
12<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderPageHeading" runat="server">
13</asp:Content>
14
15<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolderBody" runat="server">
16<div id="divMain" style="margin-left:auto; margin-right:auto" align="center" runat="server">
17 <div id="content">
18 <div id="mainContent">
19 <div id="generalcontent">
20 <asp:Panel ID="pnlRetail" runat="server" Width="960px" Visible="true" DefaultButton="loginButton">
21 <div id="Div7" style="border: medium ridge #863C18; width:575px; height:400px; margin-left:auto; margin-right: auto" align="center">
22 ...
23 <div class="g-recaptcha" data-sitekey="THISISOURNONSECRETSITEKEY" data-callback="onSubmit" data-size="invisible"></div>
24 <div style="margin-left: 15px" class="floatL">
25 <asp:Button runat="server" ID="loginButton" Text="Login" CssClass="button brown bigrounded" Width="150px" Height="30px" OnClick="onlineSpecialOrderRetailLogin_Authenticate" UseSubmitBehavior="false" />
26 </div>
27
28private bool ValidateRecaptcha()
29 {
30 string captcha_secret_key = "THISISOURSECRETKEY";
31 string url = @"https://www.google.com/recaptcha/api/siteverify";
32 WebRequest request = WebRequest.Create(url);
33 string postData = $"secret={captcha_secret_key}&response={Request["grecaptcha-execute"]}&remoteip={Request.UserHostAddress}";
34
35 try {
36 request.Method = "POST";
37 request.ContentType = "application/x-www-form-urlencoded";
38 request.ContentLength = postData.Length;
39
40 StreamWriter writer = new StreamWriter(request.GetRequestStream());
41 writer.Write(postData);
42 writer.Close();
43
44 StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream());
45 string responseData = reader.ReadToEnd();
46
47 JavaScriptSerializer jss = new JavaScriptSerializer();
48 CaptchaResponse cResponse = jss.Deserialize<CaptchaResponse>(responseData);
49
50 return cResponse.success;
51 }
52 catch (WebException) {
53 return false;
54 }
55 }
56
57 class CaptchaResponse
58 {
59 public bool success { get; set; }
60 }
61
62var secretKey = "IAMASECRETKEY";
63var captchaResponse = Request["g-recaptcha-response"];
64HttpWebRequest req = (HttpWebRequest)WebRequest.Create(
65 string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, captchaResponse));
66using (WebResponse response = req.GetResponse())
67using (Stream responseStream = response.GetResponseStream())
68 if (responseStream != null)
69 using (StreamReader streamReader = new StreamReader(responseStream))
70 {
71 string json = streamReader.ReadToEnd();
72 JavaScriptSerializer serializer = new JavaScriptSerializer();
73 CaptchaResponse data = serializer.Deserialize<CaptchaResponse>(json);
74 return data.Success;
75 }