質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3530閲覧

reCAPTCHAを実装すると403エラーが発生

TanakashiXr

総合スコア57

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2018/04/05 10:46

編集2018/04/05 11:16

以下のサイト様を参考にreCAPTCHAの実装をしたところフォームアクションの出力先にて403エラーが発生します。

参考:Googleの「reCAPTCHA」を5分で実装する

原因のお分かりの方いらっしゃったらご指摘お願い致します。

〜追記〜
フォーム

UTF

1<!DOCTYPE html> 2<html lang="ja"> 3<meta charset="utf-8"> 4<head> 5<title>会員登録</title> 6<link rel="stylesheet" href="style.css"> 7 8<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css"> 9 10 <script src="https://www.google.com/recaptcha/api.js"></script> 11 <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script> 12 13</head> 14<body> 15<div align="right"> 16<a href="index.php">トップページ</a><br> 17</div> 18<center> 19<h1>仮会員登録</h1> 20</center> 21<Hr Align="center" Width="500" Size="5" Color="000000"> 22 23 24<div class="col-xs-6 col-xs-offset-3"> 25<h2>仮メールの送信</h2> 26 27<form action="registration_mail_check.php" method="post"> 28 29<p>メールアドレス:<input type="text" name="mail" size="50"></p><br> 30 31<input type="hidden" name="token" value="<?=$token?>"> 32<center> 33<div class="g-recaptcha" data-callback="clearcall" data-sitekey="サイトキー"></div> 34</center> 35<input type="submit" value="登録する" name="button" class="recaptcha btn-attention-block-large" disabled> 36</form> 37 38 <script type="text/javascript"> 39 function clearcall(code) { 40 if(code !== ""){ 41 $(':submit[name=button]').removeAttr("disabled"); 42 } 43 } 44 </script> 45 46</div> 47</body> 48</html>

出力先

UTF

1session_start(); 2header("Content-type: text/html; charset=utf-8"); 3 4//クリックジャッキング対策 5header('X-FRAME-OPTIONS: SAMEORIGIN'); 6//データベース接続 7require_once("db.php"); 8$dbh = db_connect(); 9//エラーメッセージの初期化 10$errors = array(); 11 12$recaptcha = htmlspecialchars($_POST["g-recaptcha-response"],ENT_QUOTES,'UTF-8'); 13if(isset($recaptcha)){ 14 $captcha = $recaptcha; 15}else{ 16 $captcha = ""; 17 echo "captchaエラー"; 18 exit; 19} 20$secretKey = "シークレットキー"; 21$resp = @file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secretKey}&response={$captcha}"); 22$resp_result = json_decode($resp,true); 23if(intval($resp_result["success"]) !== 1) { 24//認証失敗時の処理をここに書く 25 header("Location: registration_mail_form.php"); 26 exit; 27}else{ 28//認証成功時の処理をここに書く 29//以下 データベース登録、メール送どなど 3031?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

stmkza

2018/04/05 10:49

フォームとその送信先のソースコードを見せてください(reCaptchaのシークレットなどは隠してください)
stmkza

2018/04/05 10:58

下のファイルでシークレットキーが消えていません。運営に連絡して消してもらってください
TanakashiXr

2018/04/05 11:00

ありがとうございます。忘れていて急いで編集にて消しました。
stmkza

2018/04/05 11:00

編集履歴は公開されているので、運営に連絡して履歴を消してもらってください。更新日時をクリックしたら見れます。
guest

回答1

0

ベストアンサー

ソースコードを見て気がついたところは、

  • 最後のif文でelseの閉じ括弧(})がない

というところです。
あと、reCaptchaがあるのでCSRF対策は必要なく、またクリックジャッキング対策は送信ページではなく、送信フォームに対してしないと意味がないですよ。
閉じ括弧を書いてどうだったか教えていただけないでしょうか。
また、送信フォームのdata-sitekeyにはサイトキーを入れてください。シークレットはサーバから送信してはいけません。

投稿2018/04/05 11:04

編集2018/04/05 11:05
stmkza

総合スコア478

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TanakashiXr

2018/04/05 11:10

こちらのミスでした。閉じ括弧は元々ありました。 申し訳ないです。 またCSRF対策はご指摘のほど削除しました。 結果。Forbidden You don't have permission to access /registration_mail_check.php on this server.と返ってきます。
stmkza

2018/04/05 11:12 編集

サーバは何を使っていますか? ApacheだとしたらPHPはCGI版ですか?モジュール版ですか?
TanakashiXr

2018/04/05 11:21 編集

サーバーはVPSレンタルサーバーのCentOSです。 Apacheを使用しておりPHPはモジュール版でございます。
stmkza

2018/04/05 11:21

パーミッションはどうなっていますか? あと、WAF(mod_securityやSiteGuardなど)はインストールしていますか?
TanakashiXr

2018/04/05 11:23

root権限です。mod_securityをインストールしております。
stmkza

2018/04/05 11:27 編集

mod_securityのログはどうでしょうか? 正直mod_securityが怪しいです
TanakashiXr

2018/04/05 11:36

mod_securityが原因でした。 まずはログ出力のみにして様子見にしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問