【提案】新しい連投規制 #56

Merged
edginer merged 6 commits from kenmo-melon/eddiner:new-res-limit into main 2023-10-21 19:27:55 +09:00
Collaborator
  • responseテーブルにtimestampを追加
  • その人が過去40秒以内に行った書き込みをすべて検索
  • 5秒以内の連投があった場合規制する

という感じです。以前のものはおそらくD1へのINSERTが反映されるのが少し遅いせいで効きが弱かったので、過去40秒を見ることにしました。40秒というのは勘で決めたのですが、30秒くらいでもいいかもしれません。
適当に試してみたのですが、クッキーを変えない単純なスクリプトであればほぼ確実に弾けます。3回くらいしか連投できないですね。 もう一つ、INSERTを一箇所減らせるのもメリットかなと思います。
デメリットは、テーブルの変更が必要なことです。
めちゃくちゃ連投しているユーザーさんが書き込むと少し処理が増えますが、それでも高々長さ8のVecをソートするだけなのでまあ無視できる範囲かなと思います。

- responseテーブルにtimestampを追加 - その人が過去40秒以内に行った書き込みをすべて検索 - 5秒以内の連投があった場合規制する という感じです。以前のものはおそらくD1へのINSERTが反映されるのが少し遅いせいで効きが弱かったので、過去40秒を見ることにしました。40秒というのは勘で決めたのですが、30秒くらいでもいいかもしれません。 適当に試してみたのですが、クッキーを変えない単純なスクリプトであればほぼ確実に弾けます。3回くらいしか連投できないですね。 もう一つ、INSERTを一箇所減らせるのもメリットかなと思います。 デメリットは、テーブルの変更が必要なことです。 めちゃくちゃ連投しているユーザーさんが書き込むと少し処理が増えますが、それでも高々長さ8のVecをソートするだけなのでまあ無視できる範囲かなと思います。
kenmo-melon added 2 commits 2023-10-19 23:27:41 +09:00
Owner

基本的には良さげで色々効きそうなんですが、試験的に導入して微妙にメトリクスとの相談が必要かもしれません

基本的には良さげで色々効きそうなんですが、試験的に導入して微妙にメトリクスとの相談が必要かもしれません
edginer reviewed 2023-10-20 00:23:23 +09:00
@ -0,0 +1,2 @@
ALTER TABLE authed_cookies DROP COLUMN last_wrote_time;
ALTER TABLE responses ADD COLUMN timestamp INTEGER default 0;
Owner

SELECT * FROM responses WHERE authed_token = ? AND timestamp > ?
を呼び出しているので、responsesのauthed_tokenの方にもインデックスを張った方が良さげな気がします

SELECT * FROM responses WHERE authed_token = ? AND timestamp > ? を呼び出しているので、responsesのauthed_tokenの方にもインデックスを張った方が良さげな気がします
Author
Collaborator

コメントありがとうございます。インデックス貼ってみました。

試験的に導入して微妙にメトリクスとの相談が必要かもしれません

ちょっと私の手元にあるデータだと小さすぎるので、ある程度大きなデータに対してどれくらい時間がかかるか試していただけたらと思います。

コメントありがとうございます。インデックス貼ってみました。 > 試験的に導入して微妙にメトリクスとの相談が必要かもしれません ちょっと私の手元にあるデータだと小さすぎるので、ある程度大きなデータに対してどれくらい時間がかかるか試していただけたらと思います。
kenmo-melon added 1 commit 2023-10-20 01:13:01 +09:00
kenmo-melon added 3 commits 2023-10-21 15:09:21 +09:00
edginer merged commit 40c424750d into main 2023-10-21 19:27:55 +09:00
Sign in to join this conversation.
No description provided.