web-dev-qa-db-ja.com

Joomlaテーブルへのゲストまたはパブリックのセッションの保存を無効にする方法

ヒット数とサーバー負荷を減らすために、joomlaのセッションテーブルに格納されているすべてのゲストまたはパブリックビジターのセッションを無効にしたいと思います。実際、私のWebサイトにはフロントエンドログインもユーザーアクセスもありません。つまり、認証が必要ないため、CSRFや他の攻撃を心配する必要はありません。

未使用の拡張機能(コンポーネント/モジュール/プラグイン)の削除や_$session_handler_からmemcachedまたはnone(file)への切り替えなど、さまざまな設定と最適化を試しましたが、運とセッションテーブルがありませんでした特にボットやクローラーがトラフィックをハイジャックしているときは、成長し続けます。

私はググリング後にいくつかのハックな回避策を見つけました、例えば ゲスト/パブリックでのJoomlaセッションの無効化(Joomla 3.x) 。ただし、これらは推奨されるアプローチではありません。

多くは動作を無効にする機能もリクエストしており、問題はJoomlaのGithubページで見つけることができます:参照 dbで「ゲストユーザー」のセッションを作成するデフォルトのJoomla動作を無効にできるようにしてください#8772 =。

解決策があるか、まったくないかを教えてください。

3
kolunar

サーバーの負荷を軽減する別の方法は、メモリタイプのセッションテーブルを作成することです。 mysqlsヒープサイズを非常に大きく設定し、セッションのblobフィールドを15,000の長さなどの大きなvarcharに変換する必要があります。

これで素晴らしい結果が得られました。

別のオプションは、memcacheとelasticacheのようなものを使用することです

3
jdog

ある種のコアハックを使いたくない場合は、セッションテーブル自体にトリガーを作成することを検討します。このようなものは動作するはずですが、テストされていません。

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;
0
cybersholt

あなたはいつもあなたのウェブサイトのセッションを破壊しましたか?
以下のコードをコピーして、テンプレートを貼り付けてくださいindex.php

<?php
$session =JFactory::getSession(); // starting the session
$session->destroy(); //This will destroy the joomla session
?> 

以下のドキュメントを読む
https://docs.joomla.org/API15:JSession/destroy

0
Josef Amalraj