Entwickler-Ecke

Programmiersprachen (Client) - Google Captcha wird nicht auf Website dargestellt


Csharp-programmierer - Mi 21.12.16 18:58
Titel: Google Captcha wird nicht auf Website dargestellt
Hallo,
ich habe auf der Website von Google eine Captcha Anfrage auf meine Domain hinzugefügt. Die vorgeschlagenen Scripte habe ich in die HTML Datei eingebunden. Aber wenn ich diese Website nun aktualisiere, kommt einfach gar nichts. Auch den Script Tag habe ich im Head Bereich eingefüht, aber es passiert einfach nichts. Das Captcha Feld soll unter die CheckBox, aber das ist alles leer. Hier die URL:

https://mainlysoft.com/mnreg.html


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Web-Entwicklung) verschoben am Mi 21.12.2016 um 18:19


Christian S. - Mi 21.12.16 19:18

Du erwartest jetzt aber nicht wirklich, dass sich hier jetzt erst einmal jemand bei Google durchliest, wie man deren Captcha einbettet, um dann den Quelltext Deiner Seite zu durchforsten, was Du denn wo getan hast, oder?

Bitte stelle Deine Frage konkreter mit Code-Ausschnitten, etc.


Csharp-programmierer - Mi 21.12.16 19:30

Also auf Google habe ich die Website so registriert:
1

Dabei kam dieser Code für den Head Bereich zu stande:

HTML-Dokument
1:
<script src='https://www.google.com/recaptcha/api.js'></script>                    


Und dieser Code für den Body Bereich:

HTML-Dokument
1:
<div class="g-recaptcha" data-sitekey="6Leceg8UAAAAABXENIEwJpkB39iD_iPKmXmrNCdV"></div>                    


Aber es passiert nichts


Christian S. - Mi 21.12.16 20:27

Die einfachen Anführungszeichen bei script-Tag kommen mir falsch vor. Allerdings erscheint bei mir im Browser auch ein "Ich bin kein Roboter"-Captcha unter der Checkbox.


Csharp-programmierer - Mi 21.12.16 20:40

Ja ich habe jetzt bei den Google Einstellungen etwas verändert und jetzt funktioniert es bei mir auch.
Jetzt gibt es ein Problem, der YouTuber (https://www.youtube.com/watch?v=ScanS3spdFg) hat dieses "Ich bin kein Roboter" Element in einer Form mit der Post Methode. Bei mir werden die Daten über jQuery an die Cloud übertragen. Da das Roboter Steuerelement irgendwie Daten mitsendet, dass passiert in dem form Tag automatisch, aber ich weiß nicht, wie ich das mit jQuery umsetzen kann :(


Christian S. - Mi 21.12.16 20:53

Wenn ich das in der Doku [https://developers.google.com/recaptcha/docs/display] richtig sehe, kann man das Ergebnis des Captchas mittels grecaptcha.getResponse() auslesen. Merke: ein Youtube-Video ersetzt nicht das lesen der Doku ;)


Csharp-programmierer - Mi 21.12.16 21:56

Soo. Theorethisch funktioniert es jetzt. Ich poste hier trotzdem mal den Code, vielleicht erkennt ihr irgendwelche Sicherheitslücken...

Die PHP Datei, die die Daten in die Datenbank schreibt. Erst wenn die Variable $captchaSuccess der Wert 1 hat, wird der weitere Code ausgeführt, der die Daten in die Datenbank schreibt:

PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
$captcha = $_POST['grecaptcharesponse'];
      $captchaSuccess = 0;
      
      if($captcha != '') {
        $secret = "dergeheimstegeheimegeheimschlüsselderwelt";
        $ip = $_SERVER["REMOTE_ADDR"];
        $var = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$captcha&remoteip=$ip");
        $array = json_decode($var, true);
        
        if($array['success']) {
          $captchaSuccess = 1;
        } else {
          $captchaSuccess = 0;
        }
      } else {
        $captchaSuccess = 0;
      }


Der jQuery Code in der HTML Datei:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
$(document).ready(function(){
                  $.post("https://mainlysoft.com/Mainlynet/Scripts/InsertData.php", {
                                                                                        .....
                      grecaptcharesponse: captchaData
                      
                  }, function(result){
                       ........
                  });
              });


Was sagen die Experten dazu? Ist die Website nun sicher vor irgendwelchen Spam Attacken?


Csharp-programmierer - Do 22.12.16 23:25

Bei der Registration auf meiner Website werden die Daten manuell über jQuery an die Datenbank (oder ehr an das PHP Script) übergeben. Wenn jetzt irgendwer den Quellcode öffnet und alle Parameter weiß, kann er dann nicht einfach ein kleines Programm schreiben, was die Datenbank zumüllt? In dem PHP Code wird ja aber auch der Captcha Code überprüft, aber diesen könnte man ja über die Browser Console herausfinden und dann zusammen mit dem entsprechenden Parameter und dem Programm zu dem Server hinsenden, oder verstehe ich das falsch?