質問編集履歴

4

html編集

2021/07/07 05:32

投稿

waiemu
waiemu

スコア14

test CHANGED
File without changes
test CHANGED
@@ -104,6 +104,30 @@
104
104
 
105
105
  ```HTML
106
106
 
107
+ <!-- // Google reCAPTCHA v3 -->
108
+
109
+ <?php if(/*サイトキーの登録があるとき*/): ?>
110
+
111
+ <script>
112
+
113
+ grecaptcha.ready(function() {
114
+
115
+ grecaptcha.execute('<?php echo $google_recaptcha_site_key ?>', {action: 'inquiry'}).then(function(token) {
116
+
117
+ var recaptchaResponse = document.getElementById('recaptchaResponse');
118
+
119
+ recaptchaResponse.value = token;
120
+
121
+ });
122
+
123
+ });
124
+
125
+ </script>
126
+
127
+ <?php endif; ?>
128
+
129
+ <!-- // Google reCAPTCHA v3 -->
130
+
107
131
  <form action="save_inquiry" id="form_input" name="form_input" method="post">
108
132
 
109
133
  <input type="hidden" name="csrf_token" id="csrf_token" value="(csrf_token)">

3

サーバーサイドの処理追記

2021/07/07 05:32

投稿

waiemu
waiemu

スコア14

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  #状況説明
8
8
 
9
- ・フレームワークSymfony(v1.4)で作った独自CMS
9
+ ・フレームワークSymfony(v1.4)で作ったシステム
10
10
 
11
11
  ・お問い合わせフォームを送信→登録メールアドレスにメールが届く
12
12
 
@@ -164,6 +164,8 @@
164
164
 
165
165
  <input type="hidden" name="recaptchaResponse" id="recaptchaResponse" value="">
166
166
 
167
+
168
+
167
169
  <div class="form_button_holder">
168
170
 
169
171
  <input type="submit" class=" button_submit" data-sitekey="(recaptcha_site_key)">
@@ -174,10 +176,80 @@
174
176
 
175
177
  ```
176
178
 
179
+ サーバーサイド
180
+
181
+ ```PHP
182
+
183
+ // Google reCAPTCHA v3 Validate
184
+
185
+ public function reCaptchaValidate($recaptchaResponse)
186
+
187
+ {
188
+
189
+ if ("/*サイトキーの登録があるとき*/") {
190
+
191
+ if (!empty($recaptchaResponse)) {
192
+
193
+ $secret = $shop_site['google_recaptcha_secret_key'];
194
+
195
+ $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$recaptchaResponse);
196
+
197
+ $reCAPTCHA = json_decode($verifyResponse);
198
+
199
+
200
+
201
+ if ($reCAPTCHA->success && $reCAPTCHA->score >= 0.2) {
202
+
203
+ echo "送信しました";
204
+
205
+ } else {
206
+
177
- ・項目のクラス名を変更した
207
+ // ボットかも
208
+
209
+ die('エラーが発生しました。');
210
+
211
+ }
212
+
213
+ } else {
214
+
215
+ die('エラーが発生しました。');
216
+
217
+ }
218
+
219
+ }
220
+
221
+ }
222
+
223
+ private function _inquiry_save($params)
224
+
225
+ {
226
+
227
+ //Google reCAPTCHA v3
228
+
229
+ if ($_POST['recaptchaResponse']) {
230
+
231
+ $this->reCaptchaValidate($_POST['recaptchaResponse']);
232
+
233
+ }
234
+
235
+   /*データ保存処理*/
236
+
237
+ /*/メール送信処理*/
238
+
239
+ }
240
+
241
+ ```
242
+
243
+
178
244
 
179
245
  ・reCAPTCHAの判定スコアを上げてみた
180
246
 
247
+ $reCAPTCHA->success && $reCAPTCHA->score >= 0.2
248
+
249
+
250
+
251
+ を0.3 ~ 0.5まで引き上げる
252
+
181
253
 
182
254
 
183
255
  いずれも上記パターンのメールに関しては効果がなく、困っております。

2

状況説明を変更

2021/07/07 05:00

投稿

waiemu
waiemu

スコア14

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  #状況説明
8
8
 
9
- PHP動くCMSを運用している
9
+ フレームワークSymfony(v1.4)作った独自CMS
10
10
 
11
11
  ・お問い合わせフォームを送信→登録メールアドレスにメールが届く
12
12
 

1

フロント側 対策処理の追記

2021/06/28 10:23

投稿

waiemu
waiemu

スコア14

test CHANGED
File without changes
test CHANGED
@@ -62,6 +62,118 @@
62
62
 
63
63
  ・JSで「内容」の部分が半角英字のみである場合に送信ボタンが押せないようにした
64
64
 
65
+ フロント側の処理
66
+
67
+
68
+
69
+ ```JQuery
70
+
71
+ $(function() {
72
+
73
+ $("textarea[name='inquiry']").change(function() {
74
+
75
+ var inquiry = $("textarea[name='inquiry']").val();
76
+
77
+ if (!inquiry.match(/[^A-Za-z0-9s.-]+/)) {
78
+
79
+ if (inquiry !== '') {
80
+
81
+ $('input.button_submit').prop('disabled', true);
82
+
83
+ alert('内容には全角文字が必須です。');
84
+
85
+ }
86
+
87
+ } else {
88
+
89
+ if (inquiry !== '') {
90
+
91
+ $('input.button_submit').prop('disabled', false);
92
+
93
+ }
94
+
95
+ }
96
+
97
+ });
98
+
99
+ });
100
+
101
+ ```
102
+
103
+
104
+
105
+ ```HTML
106
+
107
+ <form action="save_inquiry" id="form_input" name="form_input" method="post">
108
+
109
+ <input type="hidden" name="csrf_token" id="csrf_token" value="(csrf_token)">
110
+
111
+ <table>
112
+
113
+ <tbody>
114
+
115
+ <tr>
116
+
117
+ <th>内容</th>
118
+
119
+ <td>
120
+
121
+ ご質問・ご希望などをご記入ください。
122
+
123
+ <textarea name="inquiry" id="inquiry"></textarea>
124
+
125
+ </td>
126
+
127
+ </tr>
128
+
129
+ </tbody>
130
+
131
+ </table>
132
+
133
+ <table>
134
+
135
+ <tbody>
136
+
137
+ <tr>
138
+
139
+ <th>お名前<span class="require">必須</span></th>
140
+
141
+ <td>
142
+
143
+ <input type="text" name="name" id="name" value="">
144
+
145
+ </td>
146
+
147
+ </tr>
148
+
149
+ <tr>
150
+
151
+ <th>メールアドレス<span class="require">必須</span></th>
152
+
153
+ <td>
154
+
155
+ <input type="text" name="email" id="email" value="">
156
+
157
+ </td>
158
+
159
+ </tr>
160
+
161
+ </tbody>
162
+
163
+ </table>
164
+
165
+ <input type="hidden" name="recaptchaResponse" id="recaptchaResponse" value="">
166
+
167
+ <div class="form_button_holder">
168
+
169
+ <input type="submit" class=" button_submit" data-sitekey="(recaptcha_site_key)">
170
+
171
+ </div>
172
+
173
+ </form>
174
+
175
+ ```
176
+
65
177
  ・項目のクラス名を変更した
66
178
 
67
179
  ・reCAPTCHAの判定スコアを上げてみた