ヒット数とサーバー負荷を減らすために、joomlaのセッションテーブルに格納されているすべてのゲストまたはパブリックビジターのセッションを無効にしたいと思います。実際、私のWebサイトにはフロントエンドログインもユーザーアクセスもありません。つまり、認証が必要ないため、CSRFや他の攻撃を心配する必要はありません。
未使用の拡張機能(コンポーネント/モジュール/プラグイン)の削除や_$session_handler
_からmemcached
またはnone(file)
への切り替えなど、さまざまな設定と最適化を試しましたが、運とセッションテーブルがありませんでした特にボットやクローラーがトラフィックをハイジャックしているときは、成長し続けます。
私はググリング後にいくつかのハックな回避策を見つけました、例えば ゲスト/パブリックでのJoomlaセッションの無効化(Joomla 3.x) 。ただし、これらは推奨されるアプローチではありません。
多くは動作を無効にする機能もリクエストしており、問題はJoomlaのGithubページで見つけることができます:参照 dbで「ゲストユーザー」のセッションを作成するデフォルトのJoomla動作を無効にできるようにしてください#8772 =。
解決策があるか、まったくないかを教えてください。
サーバーの負荷を軽減する別の方法は、メモリタイプのセッションテーブルを作成することです。 mysqlsヒープサイズを非常に大きく設定し、セッションのblobフィールドを15,000の長さなどの大きなvarcharに変換する必要があります。
これで素晴らしい結果が得られました。
別のオプションは、memcacheとelasticacheのようなものを使用することです
ある種のコアハックを使いたくない場合は、セッションテーブル自体にトリガーを作成することを検討します。このようなものは動作するはずですが、テストされていません。
CREATE TRIGGER `delete_before`
BEFORE INSERT ON `j25_session`
FOR EACH ROW
BEGIN
IF(NEW.`guest` = 1) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'your error message';
END IF;
END;
あなたはいつもあなたのウェブサイトのセッションを破壊しましたか?
以下のコードをコピーして、テンプレートを貼り付けてくださいindex.php
<?php
$session =JFactory::getSession(); // starting the session
$session->destroy(); //This will destroy the joomla session
?>
以下のドキュメントを読む
https://docs.joomla.org/API15:JSession/destroy