回答編集履歴
2
加筆修正
answer
CHANGED
@@ -44,4 +44,6 @@
|
|
44
44
|
にあるような
|
45
45
|
《フォーム生成時にサーバからの認証用のtokenを埋め込み、リクエスト送信時に一緒にサーバに返し、正しいtokenが送られてきているか検証を行う。》
|
46
46
|
対策もご検討ください。
|
47
|
-
`$_SERVER['HTTP_REFERER']`を検証するよりも間違いないですし。
|
47
|
+
`$_SERVER['HTTP_REFERER']`を検証するよりも間違いないですし。
|
48
|
+
実装楽な事例:
|
49
|
+
[とっても簡単なCSRF対策 - Qiita](https://qiita.com/mpyw/items/8f8989f8575159ce95fc)
|
1
加筆修正
answer
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
すごいな、$_POSTで受け取るデータを全く何も検証せず、
|
2
2
|
百発百中スパム送信に使えるね、これ。
|
3
|
+
昔のphp入門書に書いてあるようなコードだな。
|
3
4
|
|
4
5
|
$contentや$emailとか$nameとか、
|
5
6
|
こういう入力があったら遮断するっていう
|
@@ -8,9 +9,35 @@
|
|
8
9
|
mb_send_mail()にかけるまえに、
|
9
10
|
不適切な文言が含まれているかどうかを
|
10
11
|
PHP側で判定して遮断するべきですよ。
|
12
|
+
```php
|
11
|
-
|
13
|
+
<?php
|
12
|
-
httpを含んでいるのを遮断するしないもご検討を。
|
13
14
|
|
15
|
+
$content =<<<EOT
|
16
|
+
_____ _______
|
17
|
+
|
18
|
+
_____________ __ ____________________________________________________________________________________________________________
|
19
|
+
|
20
|
+
_______________________MAX_____________________________________________________________________________________________________________________________________GET______
|
21
|
+
|
22
|
+
___________________
|
23
|
+
|
24
|
+
http://bit.ly/2h0gmah
|
25
|
+
|
26
|
+
_________ROLEX_________________________________________
|
27
|
+
|
28
|
+
http://bit.ly/2xtv701
|
29
|
+
EOT;
|
30
|
+
|
31
|
+
if (preg_match('/bit.ly/', $content)) {
|
32
|
+
echo 'NG';
|
33
|
+
} else {
|
34
|
+
echo 'OK';
|
35
|
+
}
|
36
|
+
|
37
|
+
```
|
38
|
+
httpは許容するけど短縮URLは拒否するって場合なら
|
39
|
+
例えばこんなサンプルコードみたいにpreg_match()すればいいんじゃないかと。
|
40
|
+
|
14
41
|
また、自分とこの入力フォームを使って投稿されているかどうかを
|
15
42
|
検証するべきで、
|
16
43
|
[PHPでCSRF対策の話 - Qiita](https://qiita.com/togana/items/ffc22d7ae4f221d1b3be)
|