t_wの輪郭

Feedlyでフォローするボタン

 2022年4月30日
 あれあれに書かれているように全文検索が鬱陶しくなるということを検証するためだけに全文検索を実装してみる。
 知名完全一致のみの全知検索が問題ないことは実体験済みだが、全文検索が鬱陶しくなるというのはまだ体験していない。

 実装したものの、クロールをやり直さないといけない作りになってしまった。まあ放置しておけばなるようになるだろう。


 2022年4月30日
 postgresqlのLIKEを使ったが、貧弱なサーバーではやはり重たいらしい。いけるかなと思ったけどいけなかった。いったん全文一致に作り替えよう。良くわかってないけど、そっちならインデックスが効くので処理の負荷が小さいはず。


 2022年4月30日
 Postgresqlの全文検索@@演算子を使うといいらしいので、@@演算子による全文検索に切り替えた。

あれ

2022/3/17 19:29:00

 「待欄に前景用の輪郭が並ぶ」のが見る人を驚かせてしまうのなら、最初に待欄を見せなければいいのではないか。
 いや、でもトップページから検索できるようになってるしなぁ……。あそこから検索してみたいものを見て回るはずだろう……。検索が引っかからなかったらそれで去ってしまうのかもしれない。全文検索があればまた違ってくるだろう。全文検索がデライトの起爆剤となる可能性もある。

Jamstack

2022/5/12 12:06:00

ウェブサイトのコンテンツを事前にHTMLファイルに変換しておいて、静的サイトとして配信する手法


利点:

  • 閲覧時の速度が速い
  • 閲覧時のサーバーの負荷が小さい
    • 安価にシステムを運用できる
  • セキュア
  • スケールしやすい
    • 複数台のサーバーによる負荷分散がしやすい
      • RDBサーバーに負荷が集中したりしない

欠点:

  • 動的なコンテンツを配信できない
  • 静的サイトの生成に時間がかかる
  • コンテンツの全文検索ができない

は?やべぇ。攻撃来てるかも。攻撃戦だ。


nginxのログみたら、SQLっぽいクエリで検索めっちゃされてる。
nginxでIPをはじくようにした。
IPをBANしたら、一旦攻撃は止んだ。


攻撃の対策どうしよう、fail2bannginx-403-404は設定してるけど、サイト内検索を連打されるとこれ効かないんだよな。
WAF入れるのが手っ取り早いんだろうけど、勉強にならないし、お金かかるしで、もうちょっとほかの手段を検討したい。


fail2banSQLインジェクションを検知してBANする
②nginxで高頻度の検索を検知してBANする
あたりかしら

設定するのめんどくせー
ちゃんと設定できてるか検証するのもめんどくせー


①検証用の被攻撃サーバーと攻撃用サーバーを立ててそこで対策が有効かを検証
本番環境に反映したら攻撃用サーバーから攻撃してみて、ちゃんと対策されているか検証

って感じで進めるとお行儀が良さそう。
めんどくせー
本番環境でペペぺって設定して、自宅のPCから実際攻撃して検証したい。そして自宅のPCから本番環境にアクセスできなくなるワナ。

こういうのって制定された手順とかあるんかな。ありそう。先に調べよう。


そもそもサイト内検索が大変重たいという問題も解決したい。
自作の検索機能がDBにインデックス張ってないわ、title LIKE %hogehoge% OR body_text LIKE %hogehoge%とかやって全文検索走るわでイケてない。
DBにちゃんとインデックス張ればいいんだろうけど、PostgreSQLの日本語のインデックスって、PGroonga入れたり、pg_bigm入れたりで、これまた検証サーバー立てないと怖いのよね。
めんどくせー。

  • 課題:全文検索にしてあるはずなのに、検索結果に出てこない輪郭がある
  • 原因:@@演算子を使っていた
    • @@演算子は何もせずともインデックスを使用すると誤認しており、LIKEよりも大幅に高速だと誤認していた。
    • @@演算子で全文検索できると誤認していた。
  • 対策:LIKEを使用する。
  • 付記:将来的に検索速度が問題になるようであれば、pg_bigmPGroongaの利用を検討する。