ブログ内検索

プログラミング教材開発
大阪府高槻市原地区で肥料教室を開いています
検索キーワード:「LOGIN」
 

Selenium + php-webdriverでWebDriverCurlExceptionのエラーにハマった時の対処

/** Geminiが自動生成した概要 **/
Seleniumとphp-webdriverのバージョンアップ後にWebDriverCurlExceptionが発生した問題の解決策についての記事です。 ログイン・ログアウトを繰り返すテストコードで、三回目のログイン時にエラーが発生。調査の結果、セッションの破棄と再生成が必要であることが判明。php-webdriverのquitメソッドを用いてdriverを明示的にquitすることで解決しました。 記事では、エラー発生時の環境、テストコード、エラーメッセージ、解決策を詳細に記述しています。

 

SOY CMSでプラグインの状態チェックを最適化して表示速度を改善

/** Geminiが自動生成した概要 **/
SOY CMSの表示速度改善についての記事です。 今回はプラグインの有効・無効の判定処理を最適化しました。従来は全プラグインの状態を都度ファイルシステムから読み込んでいましたが、キャッシュ化して参照するように変更。これにより、ファイルシステムへのアクセス回数を減らし、不要なプラグインのクラスファイル読み込みを削減することで表示速度を向上させています。 同様の速度改善は、設定情報のデータベース参照回数を減らしたSOY Shopでも行われています。

 

SOY ShopのSign In With Googleプラグインでボタンをカスタマイズする

/** Geminiが自動生成した概要 **/
SOY ShopのSign In With Googleプラグインのボタンカスタマイズ方法について解説。Googleが提供するジェネレータを使用し、クライアントID、Data Context、ID token nonce、Callback functionを設定。Nextボタンをクリック後、Enable Sign in with Google buttonをチェックし、ボタンデザインを設定後、Get codeボタンを押下。生成されたHTMLをプラグイン詳細画面に貼り付けて更新することでカスタマイズ完了。

 

SQLインジェクションに対してプリペアードステートメントが有効であるかを試してみる

/** Geminiが自動生成した概要 **/
この記事では、PHPにおけるSQLインジェクション対策としてプリペアードステートメントの有効性を検証しています。まず、脆弱なコード例を示し、攻撃者がSQL文を操作して意図しないデータを取得できることを実演。次に、プリペアードステートメントを用いた修正版を紹介し、SQL文と入力データを分離することで攻撃を防ぐ仕組みを解説しています。具体的には、プレースホルダを用いてSQL文を準備し、executeメソッドでパラメータをバインドすることで、入力データがSQL文として解釈されることを防いでいます。結果、同じ攻撃を試みてもデータが取得できず、プリペアードステートメントの有効性が確認されました。関連記事として、SOY2DAOでのプリペアードステートメントの利用方法も紹介されています。

 

SOY CMSの管理画面のHTMLファイルの探し方

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面UIをカスタマイズするには、該当HTMLファイルを見つける必要があります。例としてページテンプレート編集画面(URL例: `http://example.com/cms/soycms/index.php/Page/Detail/3`)を挙げます。 HTMLファイルは`cms/soycms/webapp/pages`ディレクトリ以下に配置されています。URLの`Page/Detail`部分がディレクトリとファイル名に対応します。まず`pages`ディレクトリ内の`Page`ディレクトリを探します。次に`Detail`ディレクトリを探しますが、存在しない場合は`DetailPage.html`が目的のファイルです。通常、`DetailPage.class.php`というPHPファイルも対で存在します。これらはSOY2HTMLの仕組みを利用しており、より深く理解するには関連の記事を参照ください。

 

SOY ShopでLogin with Amazonプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用のLogin with Amazonプラグインが開発され、Amazonアカウントでのログインが可能になった。取得できるデータはAmazon ID、氏名、メールアドレスで、住所取得は今後の課題。このプラグインは、以前開発されたAmazon Payワンタイムペイメントモジュールと連携できる可能性がある。プラグインはsaitodev.coで提供されているSOY Shopパッケージに含まれる。

 

SOY ShopでログインIDの項目名の変更を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopで、顧客が患者番号のような任意のIDでマイページにログインできるよう、ログインIDの項目名を変更する機能が追加されました。従来の「ログインID」表記だと、患者番号として運用するには分かりにくいため、管理画面から自由に名称を変更できるようになりました。例として、画像では「患者番号」に変更されています。この機能により、顧客コードを利用するよりも運用コストと教育コストの削減が見込めます。このアップデートはsaitodev.co/soycms/soyshop/ で提供されているパッケージに含まれています。

 

SOY Shop版HTMLキャッシュプラグインを追加しました

/** Geminiが自動生成した概要 **/
SOY Shop 2にHTMLキャッシュプラグインが追加され、高速化が可能になった。カートウィジェットの問題は非同期通信で解決し、カート内商品数と合計金額をJSONで取得できる。ヤマトリップショップではこの機能とLazyLoadプラグイン、jpegoptimにより、ページ表示速度が3.3秒から1秒以下になり、PageSpeed InsightsのスコアもPCで90を超えた。スマホは90に届かなかったが、Gueztliによる画像最適化で改善が見込まれる。SOY Shop 2正式版は近日公開予定。

 

【SEO対策】他のCMS向けの総当り攻撃を避ける

/** Geminiが自動生成した概要 **/
サイバー攻撃の増加は深刻な問題であり、特にCMSを狙った攻撃は増加傾向にある。記事ではSOY CMSへの攻撃事例を通して、その脅威を具体的に示している。攻撃者は管理画面へのログインを試みたり、脆弱性を突いて不正アクセスを試みる。対策としては、管理画面のURLを変更したり、.htaccessでアクセス制限をかけることが有効である。また、WAFの導入やセキュリティプラグインの活用も推奨されている。常に最新の情報に注意し、適切なセキュリティ対策を実施することで、被害を最小限に抑えることが重要である。

 

PHPのexec関数でセッションの値の引き継ぎに苦戦した時のメモ

/** Geminiが自動生成した概要 **/
Amazon Linux 2のLAMP環境で、PHPの`exec`関数を使ってGoogle Analytics APIにアクセスする際にセッションの引き継ぎに失敗した。`exec`で実行した`cmd.php`内で`session_start()`してもセッション情報が取得できなかった。調査の結果、`cmd.php`内では`session_save_path()`の戻り値が空文字列になっていた。`session_save_path("/var/lib/php/session");`を`session_start()`前に追加することでセッション情報が取得できるようになり、APIアクセスも成功した。`php.ini`の`session.save_path`の設定が原因と考えられるが、未検証。

 

SOY CMSでMySQL8系に接続できない時の対処

/** Geminiが自動生成した概要 **/
MySQL8系にアップグレード後、SOY CMSが「データベースの接続に失敗しました」エラーで起動しない場合の対処法。原因はMySQL8.0の認証方式変更にPHPのPDOが対応していないため。Ubuntu環境で、MySQLの設定ファイル(/etc/mysql/mysql.conf.d/mysqld.cnf)の[mysqld]セクションに`default_authentication_plugin=mysql_native_password`を追加し、MySQLを再起動することで解決する。これはPDOの対応までの応急処置。

 

Google Analytics APIの承認で苦戦したので、承認されるまでの流れをまとめてみた

/** Geminiが自動生成した概要 **/
Google Analytics APIの承認取得に苦労した著者が、その過程を詳述。OAuth同意画面の設定から始まり、Googleからの度重なるメールでの指摘に対応していく。 ホームページ、プライバシーポリシーの設置、アプリ操作動画の提出を求められ、動画はクライアントIDの表示や言語設定など細かい指示に従い作成し直した。最終的に承認を得るまで、動画の翻訳やスコープ設定の不備など、多くの修正を余儀なくされた。

 

SOY CMSで自動ログインを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのバージョンアップ後、初期管理者でログイン・バージョンアップ手続き・ログアウトを行うと、ログインフォームに自動ログインチェックボックスが追加されるようになりました。この機能はバージョンアップの手間を軽減します。同梱パッケージはsaitodev.co/soycms からダウンロード可能です。

 

SOY ShopのSMTPによるメール送信できない状態について

/** Geminiが自動生成した概要 **/
SOY ShopのSMTPメール送信不具合は、さくらインターネットのメールボックス側の仕様変更が原因だった。 SOY ShopはSMTP認証にDIGEST-MD5を優先利用していたが、さくら側でこれが拒否されるようになった。そのため、Thunderbirdでは送信できたが、SOY Shopからは送信できなかった。 解決策として、認証アルゴリズムをCRAM-MD5に切り替えることで送信できることを確認。修正版はsaitodev.co/soycms/soyshop/からダウンロード可能。ただし、この対応が全てのメールサーバで有効かは不明。

 

SOY CMSで管理画面のログイン時のパスワードを忘れた場合の再設定

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面パスワードを忘れた場合、パスワードリマインダが有効でなければ使えません。有効化は必須です。パッケージを最新版に更新すると手順が簡略化されます。 パスワード無しでログインするには、AdministratorLogic.class.phpのlogin関数とcheckUserIdAndPassword関数に"return true;"を追加します。管理画面へのアクセス制限としてBasic認証を設定しておくのが安全です。 ログイン後、管理者情報ページを開くにはDetailPage.class.phpに初期管理者ID取得のコードを追加します。パスワード変更時はChangePasswordAction.class.phpでエラーチェックとパスワードチェックを無効化し、管理者IDを強制的に初期管理者に設定します。変更後はファイルを元に戻し、ログイン確認後、パスワードリマインダを有効化してください。

 

さくらのVPSにUbuntu18.04を入れてSOY CMSを動かした時のメモ

/** Geminiが自動生成した概要 **/
SOY CMSでMySQL 8系に接続できない場合、認証方式の違いが原因です。MySQL 8系は`caching_sha2_password`がデフォルトですが、SOY CMSは`mysql_native_password`で接続します。解決策は、MySQLの設定ファイル`mysqld.cnf`の`[mysqld]`セクションに`default_authentication_plugin=mysql_native_password`を追加し、MySQLを再起動します。新規インストール時はインストール時に`mysql_native_password`を指定できます。既存ユーザの場合は、MySQLにログインし`ALTER USER 'ユーザ名'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';`を実行し、`FLUSH PRIVILEGES;`で変更を適用します。

 

Ubuntuで突然キーボードの操作が反応しなくなった時の対処のメモ

/** Geminiが自動生成した概要 **/
Ideapad 720SにUbuntuをインストール後、Wi-Fiが使用できない問題が発生。解決策として、追加ドライバのインストールが必要。具体的には、「ソフトウェアとアップデート」→「追加ドライバ」タブから、Broadcomワイヤレスアダプタ用のドライバを選択し適用する。再起動後、Wi-Fiが利用可能になる。 しかし、サスペンドからの復帰時にWi-Fiが切断される問題が残る。 これに対する解決策として、/etc/pm/config.d/configファイルを作成し、特定のコマンドを記述することで、サスペンドからの復帰後もWi-Fiが有効な状態を維持できるようになる。

 

SOY ShopでFacebookログインプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用Facebookログインプラグインが開発されました。管理画面で設定後、マイページログイン画面にFacebookログインボタンが表示されます。クリックするとFacebookログイン画面が開き、ログイン後にSOY Shopで新規会員登録とログインが行われます。既に登録済みの場合はログインのみ。シンプルな機能ですが、拡張性も考慮されています。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY ShopでLINE Loginプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop用LINEログインプラグインが開発されました。このプラグインをインストール・設定すると、マイページログイン画面にLINEログインボタンが表示されます。ボタンクリックでLINEログイン画面に遷移し、ログインするとSOY Shopサイトにリダイレクトされ、新規会員登録とログインが自動で行われます。既にLINE連携済みの会員はログインのみ行われます。現在は基本的なログイン機能のみですが、今後の拡張が予定されています。プラグインはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

土壌分析アプリSoil3 on SOY Shop

/** Geminiが自動生成した概要 **/
長野県栄村小滝集落は、標高が高く冬季の積雪が多い地域。良質な米作りには土壌の理解が不可欠で、土壌図インベントリーとシームレス地質図を活用。インベントリーからは「黒ボク土」と判明し、保水性が高い反面、養分保持力が低い特性が明らかに。地質図からは、付近に蛇紋岩が多く分布し、土壌が弱アルカリ性であると推測。これらの情報から、小滝集落の土壌は水はけがよく、ミネラル豊富な一方、窒素が流亡しやすい特徴を持つと結論づけ、適切な施肥設計の必要性を示唆した。実際、小滝集落の土壌はpH7.0~7.2を示し、分析結果と合致した。この事例は、公開データを用いた土壌分析の有効性を示している。

 

サイトを公開した直後にWordPressの管理画面ログインがあるか探られた

/** Geminiが自動生成した概要 **/
SOY CMSに総当り攻撃を仕掛けてみる。その4では、パスワードリスト攻撃への対策を検証しています。辞書攻撃ツールを使い、短いパスワードやありがちなパスワードを設定した場合、数秒で突破される危険性を示しています。対策として、パスワードの最低文字数を10文字以上に設定し、ランダムな文字列を使うことを推奨。ブルートフォース攻撃対策として、ログイン試行回数に制限を設けるプラグイン「Limit Login Attempts Reloaded」を紹介し、複数回のログイン失敗でアカウントをロックする方法や、一時的にIPアドレスをブロックする方法の効果を解説しています。また、WAF(Web Application Firewall)の利用も推奨し、既知の攻撃パターンをブロックすることでサーバー負荷を軽減できることを説明しています。

 

SOY Shopで特別会員向けのページを作成する

/** Geminiが自動生成した概要 **/
SOY Shopで顧客属性を利用した特別会員向けページの作成方法を紹介します。顧客属性1を「会員」とした場合、カスタムスクリプトでアクセス制限を実現できます。手順は、特別会員向けページを作成後、ページ設定のカスタムスクリプトに下記コードを記述します。 ```php $mypage = MyPageLogic::getMyPage(); $user = $mypage->getUser(); if ($user->getAttribute1() !== "会員") { header("Location:/"); //リダイレクト先を適宜変更 exit; } ``` このコードは、ログインユーザーの属性1が「会員」でない場合、指定URLへリダイレクトします。「会員」やリダイレクト先は環境に合わせて変更可能です。

 

SOY CMSでwwwありとなしのどちらでもアクセスできるサイトでの管理画面の対応

/** Geminiが自動生成した概要 **/
SOY CMSのconfig.ext.phpは、管理画面のカスタマイズを可能にする強力なツールです。管理画面のURLの変更、ログイン画面へのリダイレクト設定、.htaccessを利用したアクセス制限、管理画面のデザイン変更、独自機能の追加などが実現できます。データベースへのアクセスやSmartyテンプレートの利用も可能です。ただし、PHPの知識が必要で、不適切な記述はシステムエラーに繋がるため注意が必要です。このファイルはバージョンアップの影響を受けず、安全にカスタマイズを維持できます。

 

SOY CMSとSOY Shopで有料ブログを運営してみよう

/** Geminiが自動生成した概要 **/
SOY CMSとSOY Shopを組み合わせることで、有料ブログを簡単に構築できます。SOY Shopでライセンス商品を登録し、顧客情報入力やプラグインを簡素化することで、ユーザーの購入手続きをスムーズにします。SOY CMS側では、SOY Shopログインチェックプラグインを使って有料記事へのアクセス制限を設定し、特定の商品購入者を許可します。クレジット決済モジュールと連携すれば、スムーズな支払い確認が可能になります。さらに、PayPalやPAY.JPの継続課金モジュールを利用することで、月額課金型の有料会員制ブログ運営も実現できます。

 

SOY CMSとSOY Shopで会員制ブログを運営してみよう

/** Geminiが自動生成した概要 **/
SOY CMSはショップ系サイト開発に注力しているため、ブログ機能は弱いというイメージがあるが、ショップ特有のセキュリティ強化により、安全な会員制ブログ構築が可能になっている。方法は、SOY CMSとSOY Shopをそれぞれ顧客管理用とブログ投稿用に設置し、ブログ投稿サイトにSOY Shop連携プラグインとSOY Shopログインチェックプラグインを導入する。ログインチェックプラグインで顧客管理サイトを指定し、ブログ記事のテンプレートを編集。`cms:id="is_login"`でログイン時表示部分を、`cms:id="no_login"`で非ログイン時表示部分を囲むことで、閲覧制限を実現する。非ログイン時にはログインページへのリンクが表示され、ログイン後は制限されていたコンテンツが閲覧可能になる。この仕組みにSOY Mailを連携させれば、顧客情報に基づいたメルマガ配信も可能。HTMLのみで構築できるため、デザインの自由度やSEO対策も容易で、有料ブログや有料メルマガへの拡張も容易である。

 

SOY Shopで運営者の購入代行時に顧客の情報を自動で入力する

/** Geminiが自動生成した概要 **/
SOY Shopの拡張機能で、運営者が顧客の購入を代行する際の手間を省く仕組みが開発されました。 公開側の商品ページに設置した注文ボタンから、管理画面へ特定の顧客情報で自動ログインする機能です。 ボタンにはGETパラメータが付与され、管理画面でログイン状態とパラメータを照合することで、指定顧客の自動ログインを実現しています。 これにより、購入代行時に顧客情報入力の手間が不要となり、電話注文の2回目以降の対応をスムーズに行えます。 この機能はGitHubで公開されているパッケージから利用可能です。

 

インターネット内に流れているパケットを傍受してみる

/** Geminiが自動生成した概要 **/
WordPressなどのCMSは総当り攻撃の標的になりやすく、特にログインページがhttpの場合、IDとパスワードが傍受されやすい。Wiresharkのようなツールを使えば、ネットワーク上のパケットを解析し、http通信のログイン情報を簡単に盗み見ることが可能。httpsは通信を暗号化するため、傍受されても内容は解読できない。カフェなどのフリーWi-Fiでhttpのログインページを使うのは危険。https化はセキュリティ対策だけでなく、HTTP/2.0による高速化にも繋がるため重要。また、メールもhttpと同様に暗号化されていないと傍受される可能性があるため注意が必要。

 

SOY Shopのマイページでログインの有無でテンプレートを分ける機能を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopのマイページで、ログイン有無によるテンプレート切り替え機能が追加されました。従来はログイン前後で同じテンプレートを使用していましたが、ログイン前は1カラム、ログイン後は2カラムといったレイアウト変更の要望に応えるため、ログイン時に別のテンプレートを読み込む仕組みが実装されました。 具体的には、`mypage.html` というテンプレートを使用している場合、ログイン時は `mypage_no_login.html` と `mypage_no_login.ini` があればそちらが優先的に使用されます。これらのファイルは管理画面からは生成できず、手動でサーバーにアップロードする必要があります。機能の詳細はSOY CMSフォーラムとGitHubリポジトリで公開されています。

 

SOY CMSに総当り攻撃を仕掛けてみる。その3

/** Geminiが自動生成した概要 **/
Go言語で書かれたコードを用いて、SOY CMSへの総当たり攻撃を試行。パスワード候補の配列を定義し、ループ処理でログインを試みる。一致するパスワードが見つかった場合、処理を中断し「ログイン成功」とID、パスワードを表示する。今回は"********"でログイン成功。このコードはパスワード候補を増やすことで、複雑なパスワードでも突破可能。しかし、SOY CMS側では複数回ログイン失敗するとエラーが表示される対策が取られていることが確認された。

 

SOY CMSに総当り攻撃を仕掛けてみる。その2

/** Geminiが自動生成した概要 **/
Go言語でSOY CMSへの総当り攻撃コードを改良した。前回はトークンチェックで攻撃が無効化されたため、今回はトークン取得とセッションキー保持の処理を追加した。具体的には、ログインページからトークン値を抽出し、自作のCookieJarを用いてセッションキーを保持することで、正規のログインと同様にトークンを送信できるようにした。この改良により、辞書攻撃が可能になった。 最後に、管理画面URLの特定の容易性と攻撃のしやすさを指摘し、URLを複雑にする、IDを辞書攻撃されにくいものにするなどの対策の必要性を訴えている。

 

予約フォーム開発でSOY Shopのマイページを活用する

/** Geminiが自動生成した概要 **/
SOY Appで予約フォームに会員機能を追加する際、SOY Shopのマイページ機能を活用することで開発工数を削減できる。ログイン画面への遷移は、URLパラメータ`r`にリダイレクト先を指定することでログイン後に元の予約フォームへ戻れる。本記事では、会員登録後も同様に`r`パラメータでリダイレクト先を指定することで、登録完了後に予約フォームへ戻れるよう改良したパッケージをGitHubで公開している。この仕組を活用すれば、会員限定ページへのアクセス制御なども容易に実装できる。

 

SSHで外部のネットワークからログインできるようにする

/** Geminiが自動生成した概要 **/
Sambaサーバに外部からSSH接続できるよう設定した手順の記録。まずSambaサーバにSSHをインストールし、プライベートIPアドレス(192.168.11.8)を設定、ルーターのIPアドレスをゲートウェイに設定した。次に外部からのSSH接続のため、rootログインを禁止し、無線LANルーターでポートフォワーディング(外部ポート71823→内部ポート22)を設定。外部IPアドレス(例:127.0.0.1)へポート71823を指定してSSH接続を確認した。パスワード認証はセキュリティ的に不安なので、次回は鍵認証を設定予定。

 

さくらのVPSでSOY CMSを動かした時のメモ

/** Geminiが自動生成した概要 **/
Apacheサーバのバージョン表示はセキュリティリスクとなるため、非表示にすることが推奨されています。本記事では、Apacheの設定ファイル`httpd.conf`または`apache2.conf`を編集することで、バージョン情報を隠す方法を解説しています。具体的には、`ServerTokens`ディレクティブを`Prod`に設定することで、公開されるサーバ情報を最小限に抑えられます。また、`ServerSignature`ディレクティブを`Off`にすることで、エラーページなどからサーバのバージョン情報が削除されます。これらの設定変更後、Apacheを再起動することで変更が反映されます。さらに、セキュリティ対策としてmod_securityなどのセキュリティモジュール導入も推奨しています。

 

SOY CMSで総当たり攻撃に対応してみた

/** Geminiが自動生成した概要 **/
SOY CMSのセキュリティ強化として、総当たり攻撃対策機能を追加しました。同一IPからの短期間でのログイン試行を検知し、警告表示を行います。突破された場合は試行回数も表示し、対策のヒントを提供します。将来的にはブラックリストやメール通知機能も検討中。管理画面URLの特定防止対策と合わせて利用することで、より安全性を高めることができます。本機能を含むパッケージはsaitodev.co/soycms/からダウンロード可能です。メール通知機能も追加済みです。

 

SOY CMSであれば、管理画面のURLを特定したい

/** Geminiが自動生成した概要 **/
SOY CMSの管理画面URLは`/cms/admin/`が一般的だが、変更可能。そのため、攻撃者は`/soy/admin/`なども試す。管理画面URLを`/c!_m-s/admin/`のように複雑にするのが安全。既存サイトで`/cms/admin/`を使っている場合は、`cms`ディレクトリ名を変更し、`cms`フォルダ内、`index.php`、`shop/index.php`、`site/index.php`内のパスを修正することで変更できる。さらに、Basic認証やIP制限を追加すればより安全。

おすすめの検索キーワード
おすすめの記事

Powered by SOY CMS   ↑トップへ