teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

設定部分が欠落したので修正

2019/06/27 09:15

投稿

crhg
crhg

スコア1177

answer CHANGED
@@ -1,28 +1,61 @@
1
1
  [Throttle](https://cartalyst.com/manual/sentinel/2.0#throttle)のところに説明されていますが、以下のようにログイン試行を制限します。
2
2
 
3
- ログインの失敗はthrottleというテーブルに記録されます。global, ipアドレス毎, ユーザ毎にそれぞれ記録されていて、設定もそれぞれ毎にあります。
3
+ ログインの失敗はthrottleというテーブルにglobal, ipアドレス毎, ユーザ毎にそれぞれ記録されていて、これを元に制限するかどうかを決めます。設定も`config/cartalyst.sentinel.php`の中にそれぞれ毎にあります。
4
4
 
5
5
  ```php
6
+ 'throttling' => [
7
+
8
+ 'model' => 'Cartalyst\Sentinel\Throttling\EloquentThrottle',
9
+
10
+ 'global' => [
11
+
12
+ 'interval' => 900,
13
+
14
+ 'thresholds' => [
15
+ 10 => 1,
16
+ 20 => 2,
17
+ 30 => 4,
18
+ 40 => 8,
19
+ 50 => 16,
20
+ 60 => 12
21
+ ],
22
+
23
+ ],
24
+
25
+ 'ip' => [
26
+
27
+ 'interval' => 900,
28
+
29
+ 'thresholds' => 5,
30
+
31
+ ],
32
+
33
+ 'user' => [
34
+
35
+ 'interval' => 900,
36
+
37
+ 'thresholds' => 5,
38
+
39
+ ],
40
+
41
+ ],
6
42
  ```
7
43
 
8
44
 
9
-
10
45
  まずintervalで過去何秒間をチェック対象にするかが決まります。
11
46
 
12
47
  回数のしきい値の設定のやり方は2通りあって、回数だけを設定する方法と、attempt=>delayのペアを配列で設定する方法です。
13
48
 
14
49
  * 回数だけを指定した場合
15
50
 
16
- 過去interval秒のログイン失敗がthresholds(回)を超えている間は新たなログインができません。
51
+ 過去interval秒以内のログイン失敗がthresholds(回)を超えている間は新たなログインができません。
17
52
 
18
53
  * attempt=>delayのペアを配列で設定した場合
19
54
 
20
- 過去interval秒のログイン失敗がattempt回を超えていた場合に最後の試行からdelay秒以内ならログインができません。(attempt回数が最大のものが選ばれます)
55
+ 過去interval秒以内のログイン失敗がattempt回を超えていた場合に最後の試行からdelay秒以内ならログインができません。(attempt回数が最大のものが選ばれます)
21
56
 
57
+ この場合はipアドレス毎の制限にひっかかったことになります。いじっていなければ900秒に5回です。
22
58
 
23
-
24
- この場合はipアドレス毎の制限にひっかかったことになります。
25
-
26
59
  これを完全に回避することはできませんが、設定でintervalを短くしたり、thresholdを大きな値にすると実質的に回避できると思います。
27
60
 
28
- 特別なアドレスからだけOKにいというような機能は提供されていません。
61
+ なお、特別なアドレスからだけ制限いというような機能は提供されていません。