joomla 3.7の新機能。 Joomlaロシア化アップデート

01.10.2021 ソーシャルメディア

人気の CMS のバグは、ここ数カ月で大きな惨事となっています。 このような脆弱性がそれぞれ出現するということは、何十万ものサイトが危険にさらされていることを意味しており、すべての所有者が時間内に最新バージョンに更新できるわけではありません。 この記事では、Joomla CMS で最近発見されたホールを調査します。ユーザー データのフィルタリングが不十分なため、システムは SQL インジェクションに対して脆弱です。

Joomla 3.7.0 では、多くの改善と修正に加えて、カスタム フィールド機能、特に com_fields コンポーネントがコアに追加されました。 おそらくすでにご想像のとおり、この新しいコンポーネントが問題の原因でした。 それでは早速、脆弱性をきっかけにソース コードを調べる興味深い旅を始めましょう。

脆弱性の詳細

まず最初に、コントローラー ファイル自体を調べます。

16: クラス FieldsController は JControllerLegacy を拡張します 17: ( ... 27: パブリック関数 __construct($config = array()) 28: ( ... 32: if ($this->input->get("view") == = "フィールド" && $this->input->get("レイアウト") === "モーダル") ... 36: $lang->load("com_fields", JPATH_ADMINISTRATOR 37: 38: $config[); "base_path"] = JPATH_COMPONENT_ADMINISTRATOR;

すぐに目につく条件は次のとおりです。ビューとレイアウトがそれぞれフィールドとモーダルの値を取る場合、CMS は com_fields コンポーネントの管理バージョンをロードします。 そして、通常のユーザーからのリクエストはすべてプロキシされます。

これは私たちに何をもたらすのでしょうか? 見よう。

getListQuery メソッドの内部を見てみましょう。このメソッドはデータベースへのクエリを収集します。 ソート(ORDER BY)が形成されている行の部分に注目します。

124: 保護された関数 getListQuery() 125: ( ... 304: // リストの順序付け句を追加します 305: $listOrdering = $this->getState("list.fullordering", "a.ordering"); 306: $orderDirn = ""; 307: 308: if (empty($listOrdering)) 309: ( 310: $listOrdering = $this->state->get("list.ordering", "a.ordering"); 311: $orderDirn = $this->state->get("list.direction", "DESC"); 313: 314: $query->order($db->e​​scape($listOrdering) . " " . $db->e​​scape( $orderDirn));

$listOrdering 変数は、クエリを並べ替える基準となるテーブル内のフィールドの名前です。 これは、データベースを操作するためにサーバーで使用されるドライバーに応じてエスケープ関数によってフィルターされます。 特殊文字、特に引用符がエスケープされた文字列を返します。

mysqli ドライバーのこの関数のソース コードを見てみましょう。 Joomla がインストール中に提供するため、最も一般的です。

/libraries/joomla/database/driver/mysqli.php

242: パブリック関数エスケープ($text, $extra = false) 243: ( 244: $this->connect(); 245: 246: $result = mysqli_real_escape_string($this->getConnection(), $text); 247: 248: if ($extra) 249: ( 250: $result = addcslashes($result, "%_"); 251: ) 252: 253: $result を返す 254: )

フィルタリングには、null バイト、改行、一重引用符および二重引用符をエスケープする mysqli_real_escape_string 関数 (行 246) が使用されます。 ただし、この場合、変数にはソート対象の列の名前が格納されているため、これらは全く役に立たないアクションです。

必要な値を $listOrdering に渡す方法を見てみましょう。 getState メソッドは、JModelList の親である JModelLegacy 抽象クラスから直接継承し、さらに FieldsModelFields によって継承されます。

019: クラス FieldsModelFields は JModelList を拡張します ... 305: $listOrdering = $this->getState("list.fullordering", "a.ordering");

続きは会員限定です

オプション 1. 「サイト」コミュニティに参加して、サイト上のすべての資料を読む

指定された期間内にコミュニティのメンバーになると、すべての Hacker マテリアルにアクセスできるようになり、個人の累積割引が増加し、プロの Xakep スコア評価を蓄積できるようになります。

みなさん、良い一日を! この投稿では、バージョン 3.7 から Joomla に登場したいくつかの機能を見ていきたいと思います。これらはマテリアルの追加フィールドです。 これは、標準の com_content コンテンツ コンポーネントへの便利な追加であると思います。 以前は、いくつかのフィールドがあったため、ユーザーが管理パネルで作業しやすくするために、ヘビー コンテンツ コンストラクター (CCK) などをインストールする必要がありました。 この記事では、マテリアルに追加フィールドを作成する方法と、それらを外部サイトに表示する方法について説明します。

フィールド資料がグループに分類されているのと同じように、これらは一種のカテゴリです。 フィールドのグループを作成するには、管理パネルに移動します。 マテリアル -> フィールド グループ。 グループを作成しましょう。 次に、フィールド自体を作成します。 ここには他にもオプションがあります。主なオプションを見てみましょう。

記事の構成

基本タブ

見出し— ここではフィールドのタイトルを入力します。管理パネルで作成されたフィールドをナビゲートしやすいように 1 つ入力します。フィールドは多数存在する可能性があります。

タイプ— フィールドのタイプを選択します: テキスト、テキストエリア、URL、カレンダーなど。 ここでは詳しくは説明しませんが、なぜなら... 複雑なことは何もなく、すべて同じ原理に従って設定されています。

名前— フィールドのエイリアスをラテン文字で入力します。 これはフィールド識別子の一種であり、一意である必要があります。

名前— ここでは、サイト上で表示したいフィールドの名前を入力します。 通常、デフォルトでは、タイトルを入力すると、このフィールドは自動的に入力されますが、これを上書きすることもできます。

説明— フィールドの説明を入力します。

必然的に— マテリアルの作成時にこのフィールドが必要な場合は、「はい」スイッチを設定します。

デフォルト値— このフィールドには、デフォルトで置き換えられる値を入力できます。

フィルター— ここでは、入力データをフィルタリングするオプションを選択します。たとえば、このフィールドが整数のみを受け入れるようにしたいとします。 このフィルタリングは、このフィールド タイプのプラグイン設定でグローバルに定義することもできます。

最大長さ— 入力する文字の長さを制限できます。

「オプション」タブ

プレースホルダー現場へのヒントです。 たとえば、コンテンツ管理者へのヒントを入力できます。

表示用CSSクラス— フィールド クラスを入力して CSS のスタイルをオーバーライドできます。

フィールドタイトル— サイト上のフィールド ヘッダーの表示を制御します。

自動表示- 私の意見では、これは便利なオプションです。 プリセット設定があります(執筆時点では、値はロシア語に翻訳されていません)。

  • タイトルの後— タイトルの後のフィールドを表示します。
  • 表示前— テキストの前に表示します。
  • 表示後— テキストの後に表示します。
  • 自動的に表示しない— フィールドを自動的に表示しません。 このオプションでは、コードを使用してサイト テンプレートにフィールドを表示できます。 これについては以下で説明します。

以上です。フィールドを保存して、マテリアルを作成してください。 フィールドに割り当てたカテゴリのマテリアルに、フィールド グループの名前を含む新しいタブが表示されます。 私はそれを「」と呼んでいます 田畑«.

Web サイト上のこのフィールドは次のようになります。

CSS スタイルを使用してフィールド名を太字にしました。 すぐに言っておきますが、自動出力ではフィールド出力テンプレートをカスタマイズする機会はありません。 これは自動引き落としなしでも可能です。

Joomla テンプレートでの追加のマテリアル フィールドの表示 - 手動モード

したがって、フィールドを表示するためのプリセット設定が適していない場合、またはフィールドの HTML テンプレートを編集したいだけの場合は、マテリアル テンプレート内の任意の場所にフィールドを表示し、任意のタグで囲むことができます。 フィールドを手動で表示するには、まずパラメータでフィールドの自動表示を無効にする必要があります。 これを行わないと、フィールドが単純に複製されてしまいます。

これらの手順を完了すると、ファイルを含む次のディレクトリがテンプレート フォルダーに表示されます。 テンプレート -> html -> com_content -> 記事 -default.php。 これがこれから扱うファイルです。 マテリアル テンプレート ファイルを開き、必要な場所にフィールドを表示するコードを挿入します。 テキスト出力コードの前に次のコードを挿入しました。

アイテム -> テキスト; ?>

フィールド出力コード

item->jcfields as $field) ( $myCustomFields[$field->name] = $field->value; ) // カスタム フィールド名を回復 if (isset($myCustomFields["field-1"]) and !empty( $myCustomFields["field-1"])) : ?>

フィールド名:

field-1 の代わりに、フィールドのエイリアス (設定の最初のスクリーンショット、「名前」フィールド) を置き換えます。 例では次のようになります。

複数のフィールドを出力する場合は、「foreach」ループを再度コピーする必要はありません。 このループはフィールドの出力の上で宣言する必要があります。 たとえば、次のように 2 番目のフィールドを表示します。

フィールド名:

field-2 の代わりに - フィールドの名前。

これで終わります。 皆さん頑張ってください、さようなら!

Joomla の新しいバージョンがリリースされました。 Joomla! の現在のバージョン 3.7.0。 その後、ロシア語のローカリゼーション ファイル Joomla を更新する必要がありました。 Joomla のロシア語への翻訳を含む新しいバージョンのパッケージがリリースされたことを理解する方法と、Joomla のロシア語への翻訳の更新を含むパッケージをインストールする方法を以下に示します。 更新をインストールする前に、サイトのバックアップ コピーを作成することをお勧めします。 しかし、誰がそれを作るのでしょうか? =)

更新をロールアウトする必要があることを示す最初の兆候は、Joomla 管理パネルにログインするときにこれに関する通知が表示されることです。

ここで「」ボタンを使用できます。 今すぐアップデート」と言いましたが、いつもうまくいくとは限りません。 したがって、Joomla のメイン管理ページには別の場所があり、そこにも拡張機能を更新する必要があることを示すビーコンがあります。 これは左側のメニューセクションです。 サービス"" も明記されています。 このメッセージはリンクです (「 今すぐアップデート」(上の図))アップデートのインストールを開始します。

一般に、遅かれ早かれ、何を更新する必要があるのか​​が非常に気になり、リンクをクリックするとそれが表示されます。 インストールするには、チェックボックスにチェックを入れて、「」をクリックする必要があります。 アップデート"、コントロールボタンの最上段にあります" 拡張機能マネージャー" セクション " アップデート»:

秘蔵ボタンを押した後「 アップデート「選択したパッケージの更新プロセスが開始されます。 そして、正常にインストールされた後、 古いパッケージを上書きする, つまり、変更は元に戻せません , Joomla は陽気なメッセージ「」を表示します。

実際にやってみるとわかるように、翻訳は決して完了しません。 しかし、少なくともサイトページの主要な投稿とメッセージはロシア語になるだろう。 そして、これは、理解できないラテン文字で書かれたエキゾチックな言語(英語)の碑文を見たユーザーを怖がらせることがないため、常に便利です。 =)

親愛なる読者の皆さん、こんにちは! joomla 3 をインストールした後、最初に行う必要があるのは、「言語パック」をダウンロードしてインストールすることです。これにより、joomla 3 がロシア化されます。今日の記事では、これを行う方法を説明します。

Joomla は最も人気のある Web サイトビルダーの 1 つであり、このエンジンは世界中の数十か国で使用されています。 不要な言語パックでサイトに負担をかけないように、標準パッケージは英語です。

必要な言語 (この場合はロシア語) は個別にインストールされます。 それでは、Russifying Joomla 3 を開始しましょう。まず、ロシア語の言語パックをダウンロードする必要があります。

ロシア語言語パックをダウンロードする

Russification のパッケージは、公式 Web サイト www.joomla.org でダウンロードできます。開いたページの一番下までスクロールして「RUSSIAN TRANSLATION」という見出しを見つけ、「Download Language Pack」という項目の下にあるリンクをクリックします。

開いたページで言語パックのリンクをクリックすると、アーカイブがコンピュータにダウンロードされます。

アーカイブをダウンロードしたら、必ず別のフォルダーに解凍してください。 WinRAR アーカイブを解凍して作成する方法について書きました。 その結果、フォルダーには管理パネルとサイト自体のクラックが含まれるはずなので、それらをインストールします。

ロシア化ジョムラ 3

ロシア語言語パックを含むアーカイブをダウンロードしたので、今度はロシア語化自体を開始します。 そのために何をしなければならないのか。

1. ユーザー名とパスワードを入力して、Joomla 3 管理パネルにログインします。

2. 管理者メニューで [拡張機能] メニュー項目を選択し、ドロップダウン リストで [拡張機能マネージャー] サブ項目をクリックします。

3. 開いたページで「ファイルを選択」ボタンをクリックします。

4. 開いたウィンドウで、コンピューター上にダウンロードした管理パネル Russification ファイルを見つけて選択し、「開く」ボタンをクリックします。

5. ファイルを開いたら、[アップロードとインストール] ボタンをクリックしてインストールする必要があります。

6. インストールが完了すると、緑色の背景に「言語のインストールが成功しました」というメッセージが表示されます。 これは、言語のインストールが成功したことを意味します。

7. 管理パネルの言語パックをインストールしました。次に、同じ方法でサイトの 2 番目の言語パックをインストールします。

8. 両方のクラッカーがインストールされている場合は、それらを有効にする必要があります。 これを行うには、joomla 3 管理パネルで [拡張機能] ボタンをクリックし、ドロップダウン リストから [言語マネージャー] を選択します。

9. 開いたページの左側で、「インストール済み - サイト」という行をクリックします。これは「サイト言語パック」を意味します。 その後、(ページの右側にある)「ロシア語」の行にある星をクリックします。 星がオレンジ色に変わると、サイトのデフォルト言語はロシア語になります。

10. 線をクリックします。「インストール済み - 管理者」の行にあるアスタリスクをクリックします「ロシア語」。これにより管理パネルがロシア語になり、ロシア語がデフォルト言語になります。

注意!管理パネルまたは Web サイトがロシア化されていない場合は、ブラウザのキャッシュをクリアし、閉じてから再度開きます。 その後、Joomla 3 管理エリアに再度ログインします。

Joomla 3.4.x に Web サイトがあるので、最新バージョン (この記事の執筆時点ではバージョン 3.8.0) に更新する必要があります。

すべてがこれまでよりもシンプルになり、更新パッケージをダウンロードして 1 つずつ徐々に展開し、Joomla を使用してデータベースを定期的に修正する必要があるように思えますが、すべてがそれほど単純であるわけではありません。 落とし穴が 1 つ (または 12 個も) ありますが、順番に見ていきましょう。つまり、Joomla 3.4.x 上にサイトがあり、次は...

Web サイトとデータベース ファイルを必ずバックアップしてください。
何かがうまくいかない可能性は常にあるので)

ステップ 1. Joomla 3.4.x をバージョン 3.4.5 に更新する


ステップ 2. Joomla 3.4.5 を Joomla 3.5.1 にアップグレードする

  1. 一緒に行きましょう リンクそしてパッチをダウンロードしてください ジョームラ! 3.5.1 アップグレードパッケージ (.zip)
  2. 次に、ステージ 1 のポイント 2 ~ 5 を繰り返します。

ステップ 3. Joomla 3.5.1 を Joomla 3.6.0 にアップグレードする
(最も広範な更新フェーズ)

  1. 一緒に行きましょう リンクそしてパッチをダウンロードしてください ジョームラ! 3.6.0 アップグレード パッケージ (.zip)
  2. 次に、このアーカイブを PC 上で解凍し、結果のファイルを FTP 経由でホスティングにアップロードし、ファイルを置き換える必要があります。
  3. 「拡張機能 -> 拡張機能マネージャー」に移動し、左側のメニューで「データベース」を選択すると、やはりデータベースが古いことがわかります。
  4. 「修正」ボタンをクリックします。
  5. Joomla をバージョン 3.6.0 に更新した後、更新コンポーネントとその他の更新をインストールする必要があります。

    このために私たちは行きます 「拡張機能 -> 拡張機能マネージャー -> アップデート」そしてボタンを押してください 「アップデートを探す」, その結果、必要なアップデートのリストが得られます。 ここでは、次のアップデートを選択する必要があります。
    • ジョームラ! コンポーネントのアップデート
    • ウェブリンク拡張パッケージ
  6. まずは更新していきます ジョームラ! コンポーネントのアップデートそしてその時だけ ウェブリンク拡張パッケージ。 アップデートすることもできます 言語パック.
  7. さあ、次に進みましょう 「拡張機能 -> 拡張機能マネージャー -> インストール」そして次の図が表示されます。

    そしてリンクをクリックすると プラグインマネージャープラグインの空のリストが表示される可能性が高くなります。 これを修正しましょう:
  8. また進みましょう 「拡張機能 -> 拡張機能マネージャー -> インストール」そしてリンクをたどってください 「プラグインマネージャー」インストールプラグインが存在しないというメッセージが表示され、ここで必要なプラグインのリストが表示されます。
  9. プラグインの横にあるチェックボックスをオンにします。 インストーラー - インストール元", "フォルダー インストーラー - インストール元", "インストーラーのアップロード - URL からインストール「ボタンを押してください」 オンにする".
    今度は 「拡張機能 -> 拡張機能マネージャー -> インストール」さまざまな設置オプションを備えた、すでにおなじみの石積みが表示されます
  10. Web サイトとデータベース ファイルのバックアップ コピーを作成します。

そのため、FTP 経由でファイルをアップロードしなくても、管理パネルから直接パッチをインストールできるようになりました。

ステップ 4. Joomla 3.6.0 から Joomla 3.6.5 へのアップデート


ステップ 5. Joomla 3.6.5 から Joomla 3.7.5 へのアップデート
(これも 3 番目と同じくらい大規模な更新ステージです)


アップデートのこの段階で、Joomla はすでに PHP 5.4 ~ 5.6 のバージョンが古いことを警告し始めており、新しいバージョンの PHP7 に切り替えることを推奨しています。

ステップ 4. Joomla 3.7.5 を Joomla 3.8.0 にアップグレードする
(アップデートの最終段階)


注意!

もっと見る PHP7の最新バージョンそれだけではありません
あらゆる種類のハッキングに対するサイトの耐性が高まります。
しかし、およそ パフォーマンスが2倍以上向上します!

サイト上の一部の拡張機能は、新しいバージョンにアップグレードした後に警告を発行する場合がありますが、そのような軽微なエラーの修正は非常に簡単です。 Google 検索にエラーを入力するだけで、必要な解決策がすぐに見つかります。

著者: