投稿

2022の投稿を表示しています

サイバーセキュリティ対策のSIEM、UEBA、SOARとは?

SIEM(シーム: Security Information and Event Management)を調査しているときの覚書。 SIEM(Security Information and Event Management)とは? サイバーセキュリティ対策向けに異常検知を目的とした統合ログモニタリングシステム。 ファイヤーウォール/サーバー/IT機器などからログを収集・分析して見える化する。 サイバー攻撃を早期に発見して対応することが可能になる。 ログ収集や異常検知の設定など運用面でのコストがネック。 参考サイト SIEM(シーム)とは?セキュリティの異常を自動検知する仕組み SIEMとは?仕組みや機能、メリット、導入のポイントを解説!|Joshisu Man(情シスマン) SIEMとは?セキュリティ対策におけるログ収集の重要性 | サイバーセキュリティ情報局 UEBA(User and Entity Behavior Analytics)とは? ユーザーや機器の異常動作を機械学習によって検知する機能。 SEIMと合わせて活用することで運用コストを下げる。 よって、SEIM+UEBAを次世代SEIMと呼ぶこともある。 参考サイト 「SIEM運用は難しい」を覆す次世代ソリューション「LogRhythm」とは? | 東京エレクトロンデバイス SOAR(Security Orchestration, Automation and Response)とは? セキュリティ運用の統合管理ソリューション。 様々な情報を集約、分析して発生したインシデントの管理や関係者への通知を自動化する。 IT機器を個別に監視するのではなく、セキュリティインフラ全体を統合管理することで、組織全体のセキュリティを強化する考え方。 SOARするためのモニタリング手段としてUEBA機能付きのSIEMが導入される感じ。 SOARは インシデント対応(Response)までを含む のが大きな違い。 参考サイト SOARとは?意味・定義 | ITトレンド用語 | NTTコミュニケーションズ SOARとは:セキュリティのオーケストレーションと自動化によるレスポンス | Splunk 【関連記事】 ファイヤーウォールの意味/次世代ファイアウォール(NGFW) OWASP ZAPでWordPressサイトをセキュ

オフィスのネットワークが遅い(DNSサーバーからの応答が遅い)

最近ネットワークが遅いと感じることが多かったので調査したときの覚書。 オフィスのネットワーク環境はレンタルオフィスなので、施設提供のLANケーブルにオフィスルーターを接続している。 オフィスルーター: Aterm WX3000HP 1.問題の切り分け PCとオフィスルーターを再起動した後、下記確認する PCのネットワークドライバの更新情報 ルーターのファームウェアバージョン 同じLAN内からdigコマンドなどでDNS応答状況 DNS(名前解決)状況を調査 Windows Terminalからネットワーク環境を調査。 > ipconfig DNSサーバーはオフィスルーター(192.168.10.1)を参照している。 nslookupでレスポンスを見る > nslookup > google.com タイムアウトするか確認。 同じLAN内のLinux仮想マシンからはdigコマンドを実行する。 # dig google.com Google Public DNSに問い合わせる。 # dig @8.8.8.8 google.com 分かったこと 同じドメイン名でもタイミングによってはタイムアウトする。 GoogleとCloudflareのPublic DNSを指定してもタイムアウトする場合がある。 LAN上のどのPCから行っても同じ。 なぜだ? 施設のルーターでDNSパケットを制御しているのかもしれない。 2.Public DNSをオフィスルーターに設定 DHCPから提供されたDNSサーバー(施設ネットワークの出口になっているルーター)ではなくPublic DNSに変更してみる。 GoogleとCloudflareのPublic DNSが有名。 今回はCloudflareを設定してみた。 Public DNS  |  Google Developers Set up 1.1.1.1 on a router · Cloudflare 1.1.1.1 docs 1.1.1.1 - Wikipedia 3.WindowsのDNSサーバーを直接変更 設定 → ネットワーク → アダプターのオプションを変更する からDNSサーバーを指定する 優先DNSサーバー: 1.1.1.1 代替DNSサーバー: 1.0.0.1 施設ルーターの問題ならオフィスルーターやWindo

PHPでTwilio API SDKを叩いてSMS送信を試す

 Twilio APIをPHPから叩いているときの覚書。 環境: PHP 7.4.30, Twilio SDK 6.42.0 公式サイト GitHub - twilio/twilio-php: A PHP library for communicating with the Twilio REST API and generating TwiML. PHP Helper library | Twilio 1.インストール composerを使ってインストールする。 $ composer require twilio/sdk 2.SMS送信サンプル サンプルを実行してみる。 <?php $sid = "ACXXXXXX"; // Your Account SID from www.twilio.com/console $token = "YYYYYY"; // Your Auth Token from www.twilio.com/console $client = new Twilio\Rest\Client($sid, $token); $message = $client->messages->create(   '+819012345678', // Text this number   [     'from' => '+12223334444', // From a valid Twilio number     'body' => "テスト\n送信",   ] ); print $message->sid; print $message->status;  簡単に送れた。 MessageInstanceを返すので詳細はソースコードを読んだ方が分かりやすい。 送信ログはTwilio Consoleの電話番号を選択したMessages logでも確認できる。 3.Twilio Lookup APIを試す Lookup APIは電話番号が正しい形式かキャリア情報を取得できる。 参考サイト Twilio Lookup API – SMSを送信する前に電話番号の詳細情報を取得する #twilio |

Microsoft Graph PHP SDK v2.0を試す

Microsoft Graph APIをPHPからアクセスしようとしいるときにMicrosoft Graph PHP SDKの2.0-RCがリリースされていたので試したときの覚書。 環境: PHP 7.4.30, Microsoft Graph PHP SDK 2.0.0-RC6 公式サイト GitHub - microsoftgraph/msgraph-sdk-php: Microsoft Graph Library for PHP. Tags · microsoftgraph/msgraph-beta-sdk-php · GitHub PHP 7.4以上。 v2.0を試すときはMicrosoft Graph PHP SDK Upgrade Guideとサンプルコードを参考にする。 msgraph-sdk-php/UPGRADING.md at feat/kiota-preview · microsoftgraph/msgraph-sdk-php · GitHub msgraph-sdk-php/Examples.md at feat/kiota-preview · microsoftgraph/msgraph-sdk-php · GitHub Postmanのチュートリアルをやっていないと理解できないと思う。 Microsoft Graph API + PostmanでOneDriveにファイルアップロード あとPhpStormとかでソースコードを読みながらでないと使い方が分からない。 ※ 公式ドキュメントはEnglish(United States)に変更しないとPHP SDKのサンプルコードが表示されない。 1.ドライブ情報取得 v2.0からはAccessTokenの管理はSDKがやってくれるようになった。 参考:  Get Drive - Microsoft Graph beta | Microsoft Docs $tokenRequestContext = new \Microsoft\Kiota\Authentication\Oauth\ClientCredentialContext( '6cc440ec-8a1f-4736-ac1d', 'eae64fe9-b7eb-4c4b-b87d', 'vh5

さくらのメールボックスで使われている迷惑メールフィルタ「SpamAssassin」とは?

迷惑メールフィルタ「SpamAssassin」を調査したときの覚書。 参考サイト Apache SpamAssassin: Welcome ウェブメールでメールフィルタ機能を設定したい | さくらのサポート情報 SpamAssassin - Wikipedia SpamAssassinとは? メールサーバーに組み込めるオープンソースの迷惑メールフィルタ。 Apacheソフトウェア財団が管理運用しているので安心感がある。 主な特徴 スパムを判定するルールを柔軟に設定可能 ルールに基づきスコアを加算して一定以上の場合スパムと判定 スパムと判定したメール件名に文字列を挿入可能 デフォルトは「*****SPAM*****」 判定ルールとスコア値の結果をメールヘッダー「X-Spam-Status」として挿入 SpamAssassinが挿入するメールヘッダー さくらのメールボックスにメールアカウントを作成して、SPFを設定していないサーバーからメール送信してみた。 ユーザ/メールアドレス全体設定の迷惑メールフィルタは「弱めの設定」。 アカウント設定の迷惑メールフィルタは「フィルタを利用」に設定する。 mailコマンドで送信。 # mail test@hoge.jp Subject: test http://1.2.3.4/?key=test . メールログを確認 # less /var/log/maillog 挿入されたメールヘッダー X-Spam-Checker-Version: SpamAssassin 3.4.3 (2019-12-06) on www1234.sakura.ne.jp X-Spam-Flag: YES X-Spam-Level: ******* X-Spam-Status: Yes, score=7.7 required=7.0 tests=BODY_SINGLE_URI, BODY_SINGLE_WORD,LOCALPART_IN_SUBJECT,NORMAL_HTTP_TO_IP, NUMERIC_HTTP_ADDR,SPF_HELO_NONE,SPF_NONE,TVD_SPACE_RATIO_MINFP autolearn=no autolearn_force=no version=3.4.3 X-Spam-Report:  * 

Lets Note S9にUbuntu Desktop 22.04をインストール

古いレッツノートにUbuntu Desktopをインストールしたときの覚書。 環境: Let's note CF-S9L(CF-S9LY9BDP), Intel Core i7 M640 2.8Ghz, メモリ8GB Let's note CF-S9Lは2010年9月発売。 参考: パナソニック公式サイト|スペック対比表 1.Ubuntu 22.04をクリーンインストール 公式サイトのチュートリアルを参考に。 Install Ubuntu desktop | Ubuntu balenaEtcherというソフトを使ってUSBメモリにISOファイルを書き込む。 完了後にWindowsが「フォーマットしますか?」と聞いてくるがキャンセル。 USBメモリをノートPCに挿して起動。 BIOSでUSB HDDの起動順序を上位にしておく。 3分ぐらい処理が走った後Welcome画面が表示された。 言語はEnglish、キーボードはJapanese、Minimal installationを選択。 Other optionsの2つも選択。 Erase disk and install Ubuntu, None インストールは10分ぐらい。 USBメモリを抜いて再起動。 2.USBメモリをフォーマット インストールメディアとなったUSBメモリをフォーマットするにはUbuntuになったノートPCにUSBメモリを接続して、Disksアプリケーションを使う。 参考:  usb - Can't format Ubuntu installation stick - Ask Ubuntu 右上のメニューからFormat Disk... No partitioningを選んでフォーマット。 左下のアイコンからFormat Partition... Volume Nameは「USB32GB」とかにして「FAT」を選択。 Windows PCに挿して確認。 3.Ubuntu Desktopの感想など 分かったことや感想など。 内臓Wi-Fiが普通に使える。 トラックパッドの右端こすってスクロール出来ない。 YouTubeが見れて音も出る。 デフォルトでインストールされているFirefoxが遅いように感じる。 Google Chromeをインストールすると快適になった。 Wind

API経由のSMS送信に関してTwilioとAmazon SNSを調査比較

SMSと連携した予約システムを開発しているときの覚書。 SMSのAPIを提供しているのはTwilioとAmazon SNSが有名。 SMS Messaging API | Twilio Amazon SNS(サーバーレスアプリのための pub/sub メッセージングサービス)| AWS 費用はほぼ同じ1通10円ぐらい。 Twilioは米国の番号を取得して日本の番号へ国際SMSを送信する。 高品質SMSという日本国内番号から送る方法がある。 Twilioの営業担当へ要問合せ。 Twilio から050番号で SMS を送ることはできないのですか? – Twilio - KDDI Web Communications 高品質SMSとは何ですか? どのように機能しますか? – Twilio - KDDI Web Communications Amazon SNSは発信番号(送信元)を選択できる。 Amazon SNS で、SMS メッセージを送信する際に発信番号の選択をサポートできるようになりました Amazon SNS の SMS を利用する際の留意点と対策について - サーバーワークスエンジニアブログ 2022年からドコモとソフトバンクでフィッシングSMS対策が強化されている。 ドコモからのお知らせ : 「危険SMS拒否設定」(無料)の提供について(2022年3月22日更新) | お知らせ | NTTドコモ 迷惑SMS対策機能(無料)を提供開始 | スマートフォン・携帯電話 | ソフトバンク 【関連記事】 Twilioで転送電話→出なかったら留守電応答→音声録音→メール送信 LINE Notifyでメールアドレスがないユーザーとの問合せ機能を実現したい

OpenLiteSpeed, Nginx, NGINX Unitを改めて調査

PHP7.4が今年末でサポート終了するタイミングでWebサーバーも見直そうと調査しているときの覚書。 特にWordPressと相性がいいOpenLiteSpeedが気になっていた。 環境: CentOS Stream 8, Nginx 1.22.0, PHP 7.4.30 1.OpenLiteSpeedとは? 商用のLiteSpeedのオープンソース版Webサーバー。 2003年初版リリース。 ちょっとずつシェアが増えていて2022年8月時点で12.3%。 Nginx: 33.8%, Apache: 31.3%, Cloudflare Server 21.7% 参考:  Historical trends in the usage statistics of web servers, August 2022 独自にビルドしたPHPとキャッシュ用WordPressプラグインも配布していて、Nginxより高速に動作するらしい。 HTTP/3にいち早く対応。 設定ファイルの記述はApacheと同じ。 OpenLiteSpeed LiteSpeed Web Server - Wikipedia 開発しているのはLiteSpeedというアメリカの会社。 George Wangという方がSEO。 About Us - LiteSpeed Technologies 中国との関係を心配してしまう…。 2. Nginxとは? オープンソースな軽量Webサーバー。 ロシア人の開発者により2004年に初版公開。 2019年3月にアメリカのF5ネットワークスに買収された。 nginx - Wikipedia Leadership | Company Information | F5 F5, Inc. - Wikipedia 2021年にApacheを抜いてWebサーバーのシェア1位に。 2022年1月にはオリジナル開発者がF5とNginxが離れることが発表された。 F5、NGINXの開発チームをロシア国外へ移転させたことを報告。開発を立て直しリリースサイクルも元通りに - Publickey NGINX開発者のIgor Sysoev氏が引退を発表。F5とNGINXから退任 - Publickey これからの開発が心配…。 3. NGINX Unitとは? php-fpmと同じアプリケーショ

Office365スパム対策に引っ掛かってメールサーバーがブラックリストに登録されていることが判明

サーバーからメール送信するときに拒否されたので、スパム判定されているか確認したときの覚書。 環境: CentOS Stream 8, Postfix 3.5.8 1.サーバーからメール送信時にエラー サーバーからメール送信しようとしたら下記エラー。 Aug  9 07:50:23 server03 postfix/smtp[246790]: 477E6D96A3: to=<>, relay=hoge.mail.protection.outlook.com[]:25, delay=0.72, delays=0.06/0.02/0.6/0.04, dsn=5.7.606, status=bounced (host hoge.mail.protection.outlook.com[] said: 550 5.7.606 Access denied, banned sending IP []. To request removal from this list please visit https://sender.office.com/ and follow the directions. For more information please go to  http://go.microsoft.com/fwlink/?LinkID=526655 AS(1430) (in reply to RCPT TO command)) Office 365 スパム対策 IP 除外ポータルから申請してブラックリストから除外できる。 Delist IP - Delist IP ブロックされた送信者の一覧から自分を削除し、アドレス 5.7.511 アクセス拒否エラー - Office 365 | Microsoft Docs 電子メール配信率の最大化 (Dynamics 365 Marketing) | Microsoft Docs 除外申請したら下記エラー。 リクエストの処理中にエラーが発生しました。こちらにあるメールの配信率に関するベスト プラクティスに従っていることをご確認いただき、リストからの除外をリクエストする IP アドレスを delist@messaging.microsoft.com にお送りください。 送信しようとしたサーバーはSPFとDKIMを設定済み。

Google Workspaceで宛先不明のメールを転送受信

Google Workspaceでいないユーザー宛てにメールが来たとしてもメール転送する設定をしたときの覚書。 サーバー側でrootやnginx宛てに送ろうとするときがある。 今まではユーザーのメールエイリアス設定で受け取っていた。 昔Google Apps時代はメールエイリアス設定で正規表現を記述できたけど今は出来ない。 公式ヘルプを参考にする。 Google Workspace でのメールのルーティングと配信のオプション - Google Workspace 管理者 ヘルプ 公式ヘルプでは「キャッチオール」という言い方をしている。 Google Workspaceの管理画面にログイン アプリ → Google Workspace → Gmail → ルーティング → 設定 ルーティング名: 宛先不明を転送 1.影響を受けるメール: 受信 2.上記の種類のメッセージに対し、次の処理を行う   件名の先頭に追加するカスタム テキスト: 宛先不明   エンベロープ受信者を変更する: (受信するユーザーの@の前部分) オプション   B. 影響を受けるアカウントの種類     認識できない、キャッチオール これで保存。 @の前を適当な値にしてメール送信テストする。

Microsoft Graph API + PostmanでOneDriveにファイルアップロード

サーバーのバックグラウンド処理(PHP)でOneDriveの機能を利用する方法を調査しているときの覚書。 環境: CentOS Stream 8, PHP 7.4.19 Microsoft Graph API公式ドキュメント ユーザーなしでアクセスを取得 - Microsoft Graph | Microsoft Docs サーバーなどバックグラウンドでMicrosoft Graph APIにアクセスするのを「アプリケーション(Application)」と呼んでいる。 ユーザーの許可を得るアクセスは「委任(Delegated)」。 最初はよく分からなくてもPostmanで動作確認するあたりでだんだんと分かってくる。 1.アプリ登録とアクセス許可 まずは上記公式ドキュメントに従ってやってみる。 アプリ登録 「証明書とシークレット」からクライアントシークレットを作成 説明は作成日(20220804)を設定することにした 値をコピーしておく 「APIのアクセス許可」からアクセス許可の追加。 Files.ReadWrite.All|アプリケーションを追加 「既定のディレクトリに管理者の同意を与えます」をクリック ちなみに無期限のクライアントシークレットは作成不可になったらしい。 クライアントシークレットを定期更新する処理を作るか、手動による更新が必要。 クライアント シークレット作成画面の変更について | Japan Azure Identity Support Blog 2.Postmanで動作確認 10年前によく使っていたAPIテストツール「Postman」がクラウドベースで超進化していた。 Microsoft Graph API で Postman を使用する - Microsoft Graph | Microsoft Docs Microsoft Graph | Postman API Network 上記ドキュメントからリンクされている説明動画を見ればだいたい分かる。 Googleアカウントでサインアップした。 動画と同じことをやってみる。 Postmanの画面が少し違っていた。 動画見て分かった気にならないのが大事。 3.OneDriveの情報取得 Postman上で特定ユーザーのOneDrive情報を取得するリクエストを送信してみる。 UserIdはGet U

Microsoft Azureポータルに登録してチュートリアルをやる

Microsoft Graph APIを試すために新規Microsoftアカウントを作成してAzureポータルへログインしたときの覚書。 環境: CentOS Stream 8, PHP 7.4.19 1. Azureポータルにログイン(Microsoftアカウント作成) Microsoft 365のビジネスアカウントはもってないので、下記から会社メールアドレスでMicrosoftアカウント登録から行った。 Azure の無料アカウントを今すぐ作成 | Microsoft Azure アカウント作成後Azureポータルへ移動。 登録直後のOneDriveの容量は5GB。 2. PHPのチュートリアルをやる ※ 追記。これをやるよりPostmanのデモをやった方が圧倒的に分かりやすい。 Microsoft Graph API で Postman を使用する - Microsoft Graph | Microsoft Docs Microsoft公式のPHPチュートリアルをやってみる。 Microsoft Graph チュートリアル - Microsoft Graph | Microsoft Docs msgraph-training-php/demo at main · microsoftgraph/msgraph-training-php · GitHub GitHubのREADMEの方が分かりやすかった。 書いてある通り設定してサンプルを実行してみた。メニューが出てきたら1を入力。 $ php main.php Error getting user: Client error: `POST https://login.microsoftonline.com/common/oauth2/v2.0/devicecode` resulted in a `400 Bad Request` response: {"error":"invalid_request","error_description":"AADSTS50059: No tenant-identifying information found in either the reque (truncated...) Azure AD 認証と承認

PhpSpreadsheetをインストールしてXLSX→PDF変換を試す

PHPを使ってExcelからPDF変換のベストプラクティスを探しているときの覚書。 環境: CentOS Stream 8, PHP 7.4.19 PHPでエクセルを編集するのはPhpSpreadsheetが最強。 PhpSpreadsheet/samples at master · PHPOffice/PhpSpreadsheet · GitHub Welcome to PhpSpreadsheet's documentation - PhpSpreadsheet Documentation サンプルコードはGitHub上のsampleディレクトリにある。 ・・・けど、ドキュメントで十分だった。 composerを使ってインストールする。 $ composer require phpoffice/phpspreadsheet 例えばエクセルを読み込んで特定のセルに値を入れて保存する処理はこちら。 require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('input.xlsx'); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('I3', 'テスト'); $writer = new Xlsx($spreadsheet); $writer->save('output.xlsx'); 元よりファイルサイズが小さくなっているのが気になるけど問題なく出力できた。 TCPDFを使う場合はcomposerでインストールするだけでOK。 $ composer search tcpdf $ composer require tecnickcom/tcpdf PDF変換をするサンプルコードはこちら。 require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = \PhpOff

PHP composerをCentOS8にインストール

久しぶりにcomposerを使おうと思ったらdnfのリポジトリになかったので、公式サイトからインストールしたときの覚書。 環境: CentOS Stream 8, PHP 7.4.19 公式サイト通りにコマンドを打つ。 Download | Composer php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" composer.pharが出来ているので確認する。 # ./composer.phar --version Composer version 2.3.10 2022-07-13 15:48:23 別のユーザーが使えるようにPATHが通ったディレクトリに移動 # mv composer.phar /usr/local/bin/composer composer自体をアップデートするとき # composer self-update PhpSpreadsheetインストールしてみる # composer require phpoffice/phpspreadsheet Windowsにインストールする場合はScoopを使う(インストールはしていない)。 > scoop search composer 【関連記事】

PHP でExcel(xlsx)をPDF変換する方法5選

ウェブフォームの内容をエクセルに書き込んでPDF出力する方法を調査したときの覚書。 環境: CentOS Stream 8, PHP 7.4.19 1.PhpSpreadsheet PHPでエクセルを編集できるライブラリ。 開発が活発なので安心感がある。 PDFに出力するときはTCPDFなどの外部ライブラリを使う。 GitHub - PHPOffice/PhpSpreadsheet: A pure PHP library for reading and writing spreadsheet files Welcome to PhpSpreadsheet's documentation - PhpSpreadsheet Documentation Reading and writing to file - PhpSpreadsheet Documentation これで問題なく変換できるのであれば一番いいと思う。 試す予定。 2. PhpSpreadsheet + LibreOffice PhpSpreadsheetでエクセルを編集してLibreOfficeでPDF変換する方法。 LibreOfficeはオープンソースのオフィスソフト。 OpenOfficeの後継ソフト。 ホーム | LibreOffice - オフィススイートのルネサンス LibreOffice - Wikipedia LinuxサーバーにインストールしてLibreOfficeのコマンドで変換する。 14年前にOpenOfficeで試したときは変換に時間掛かるし、環境整えるのが大変だったので優先順位は低い。 参考:  【Linux】OpenOffice.orgとJODConverterでExcelをPDF変換(設定編) 今なら下記のような外部APIが充実しているので、わざわざこの方法を選択する理由はない。 3. Google Drive API GoogleドライブのAPIを利用してPDF形式でダウンロードする方法。 無料で利用できるが、100秒間に20,000回の制限がある。 (まず制限に引っかかることはなさそう) Drive API  |  Google Developers Usage limits  |  Drive API  |  Google Developers テンプレート

Lets Note S9にGoogle ChromeOS Flexをインストール

ChromeOS Flexが気になったので古いノートPCにインストールしてみたときの覚書。 環境: Let's note CF-S9L(CF-S9LY9BDP), Intel Core i7 M640 2.8Ghz, メモリ8GB Let's note CF-S9Lは2010年9月発売。 参考: パナソニック公式サイト|スペック対比表 1.ChromeOS Flexとは ChromeOSから派生した古いPCとMacにインストールすることを目的にしたディストリビューション。 ChromeOSはGoogleが主導で開発しているLinuxをベースのOS。 オープンソースのChromium OSから派生しGoogle Chromeを主要なインタフェースにしていることが特徴。 ChromeOS Flexは当初CloudReadyという名前で開発されたのを2020年にGoogleが買収。 2022年2月に開発版を発表。 2022年7月に正式版をリリース。 個人用途は無料。 企業向けにデバイス管理などを展開する予定。 参考 Google ChromeOS - Wikipedia ChromeOS - Wikipedia PC 版または Mac 版 ChromeOS Flex を入手 - Chrome Enterprise 2.インストール手順 公式サイトを参考に。 1: USB インストーラを作成する - Chrome OS Flex ヘルプ 手順の概要 Chrome拡張機能をインストールして、ChromeOS Flex用USBインストールメディアを作成。 8GB以上のUSBメモリが必要。 USB3のメモリで12分ほどで作成完了。 ノートPCのBIOS(起動時にF2を押す)から起動オプション優先度の「USBハードディスク」をハードディスクより上にする。 USBインストールメディアをノートPCに挿して起動。 言語はデフォルトのEnglish(United States)を選択。 14:25開始 → 14:29終了(4分ほどで終了)。 USBを抜いて起動。 言語とキーボードを日本語にした。 Wi-Fiは見えるけど使えなかった(ハードの問題だと思う)のでLANを接続。 Googleアカウントでログイン 事後処理 USBメモリをPCに挿して、Chromebookリカバリユ

Lets Note S9のSSD交換してWindows10をクリーンインストール

Let's noteのSSDを交換したときの覚書。Windows10をクリーンインストールする。 環境: Let's note CF-S9L(CF-S9LY9BDP), Intel Core i7 M640 2.8Ghz, メモリ8GB 旧SSD: Toshiba THNSNC256GBSJ SATA2.0 3Gbps 新SSD: CFD CSSD-S6T240NMG1Q SATA3.0 6Gbps (Toshiba THNSN9240GESG) 新SSDはデスクトップPCで使っていたお古。 Let's note CF-S9Lは2010年9月発売。 今はVGA出力用で持ち出すぐらいにしか使っていない。 インストールメディアの準備 Windows10のインストールツールをダウンロードしてインストールメディアを作成する。 参考:  Windows 10 のダウンロード ダウンロードしたファイル名: MediaCreationTool21H2.exe このLet's noteは USBメモリから起動できない のでisoファイルを作成してDVDに焼く。 BIOSの「USBハードディスク」を起動順序の上に設定すれば起動できる。 選択したオプション:English(United States), Windows10, 64-bit(x64) 片面1層4.7GBのDVDで問題なかった。 SSD交換する前に光学ドライブへ入れておいた。 その他準備した事 「windows product key」でメール検索してプロダクトキーを確認。 2013年1月にWindows8proを買ったときのもの。 起動時にF2押してBIOSメニューに入り起動デバイスの順番を確認。 同じくBIOSメニューで光学ドライブ電源をオン(デフォルトはオフ) → クリーンインストール後はオフに変更 サポートページを確認 PanasonicのLet's note CF-S9L(CF-S9LY9BDP)ページ このPCだけに保存してあるデータはないのでバックアップはとらない。 BIOSやフォームウェアのアップデートは事前に最新にした方がいい。 SSD交換 下記サイトを参考にした。 Panasonic Let’s note CF-S9 のSSD換装 | パソコンりかばり堂本舗 少し

CentOS9にImageMagick6.9をdnfからインストール

画像フォーマットAVIFに変換したくなりImageMagickをインストールしたときの覚書。 結局CentOS9でもdnf経由はImageMagick6系を配布していてAVIFには対応していない。 環境: CentOS Stream 9, ImageMagick 6.9.12-52 EPELリポジトリを追加 参考:  Extra Packages for Enterprise Linux (EPEL) :: Fedora Docs # dnf config-manager --set-enabled crb # dnf install epel-release epel-next-release 検索してバージョン確認。 # dnf search imagemagick # dnf info ImageMagick Available Packages Name         : ImageMagick Version      : 6.9.12.52 Release      : 1.el9 まだ6.9だった。 ImageMagickインストール # dnf install ImageMagick 確認 # convert --version Version: ImageMagick 6.9.12-52 Q16 x86_64 17273 https://legacy.imagemagick.org Copyright: (C) 1999 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Features: Cipher DPC Modules OpenMP(4.5) Delegates (built-in): bzlib cairo djvu fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png ps raqm raw rsvg tiff webp wmf x xml zlib WebPとAVIFの対応確認 # convert -list format | grep webp # convert -list format | grep AV

PurgeCSSでCSSを軽量化する

Bootstrapのsassを読み込んで出力したcssファイルが240KBくらいあるので、不要なスタイルを削除するPugeCSSを試したときの覚書。 開発サーバー環境: CentOS Stream 8, PurgeCSS 4.1.3, Bootstrap 5.1.3, WordPress 6.0.1 開発クライアント環境: Windows10, PhpStorm 2022.1.3 開発はWindowsから仮想マシン上の共有ファイルをPhpStormで編集している。 そしてPhpStormのFile Watchersの機能でBootstrapの各sassを読み込んで一つのCSSファイルを出力している。 PurgeCSSのインストール 公式サイトを参考に。 PurgeCSS - Remove unused CSS | PurgeCSS まずはコマンドラインで試してみる。 npmでインストール。 # npm install -g purgecss WordPressのテーマに移動してビルドしてみる。 # cd /home/httpd/project/wordpress/wp-content/themes/sidebar/ # purgecss --css assets/css/main.css --content ./**/*.php --output assets/css/main.min.css cssファイルは17KBまで小さくなった。 main.min.cssを読み込むようにして、ブラウザで確認してみる。 設定ファイルを作る プラグインなどPurseCSSに解析してほしいファイルを設定ファイルで定義する。 Configuration | PurgeCSS PHPで動的に生成するスタイル名はsafelistに記述する。 プロジェクトのトップで作業。 # cd /home/httpd/project/ # vi purgecss.config.js module.exports = {   content: [     './wordpress/wp-content/themes/sidebar/*.php',     './wordpress/wp-content/themes/sidebar/**/*.php',     '

【Linux】NFSv4を使ってサーバー間で共有フォルダをmountする

データセンターにおいてあるVMware Serverで構築されたサーバー群の中で、インストール直後の仮想マシンをどれか1台の共有フォルダに置いといて、それを他のサーバーでmountしたくて設定したメモ。 まずは共有ディレクトリがあるサーバー(CentOS)をNFSサーバーとする。 基本的に下記サイトを参考に。 CentOS5.0でNFSv4の設定 NFSサーバーをインストール # yum install nfs-utils portmap /etc/exportsを編集してNFSサーバーの設定をする(fsid=0を忘れずに) # vi /etc/exports    /home/VirtualMachines    192.168.100.0/255.255.255.0(rw,sync,fsid=0) NFSサーバーを起動する # /etc/rc.d/init.d/portmap start # /etc/rc.d/init.d/rpcidmapd start # /etc/rc.d/init.d/nfs start ファイヤーウォールを設定する(NFSv4をチェック)。他のポートは開けなくても大丈夫みたい。 # system-config-securitylevel-tui 自動起動するように # chkconfig nfs on 公開している共有ディレクトリを確認 # showmount -e 名前解決でエラーになるようなら/etc/hostsに記述する。   次に各サーバーで共有ディレクトリをマウントする(クライアント側の設定) NFSサーバーをマウントするために必要なツールをインストールしてportmapを起動する(既にあるなら必要なし) # yum install nfs-utils portmap # /etc/rc.d/init.d/portmap start # /etc/rc.d/init.d/rpcidmapd start ファイヤーウォールを設定する(NFSv4をチェック) # system-config-securitylevel-tui マウントしてみる(サーバー側は「/」だけでいい)。 # mk

CentOS8 + venvのpgAdmin4をアップグレード

pgAdmin4をv6.6からv6.11にアップグレード(バージョンアップ)したときの覚書。 環境: CentOS Stream 8, pgAdmin4 v6.6 インストールしたときの記事はこちら。 pgAdmin4をCentOS8にvenvでインストール Python仮想環境用のディレクトリへ移動してスクリプト実行 # cd /opt/software/python-venv # source pgadmin4/bin/activate アップグレード確認 (pgadmin4)# python -m pip list -o まずは基本モジュールのアップグレード実行 (pgadmin4)# python -m pip install -U pip setuptools requests  requestsとpgadmin4のバージョンが合わないとエラー。 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. pgadmin4 6.6 requires requests==2.25.*, but you have requests 2.28.1 which is incompatible. pgadmin4をアップグレード (pgadmin4)# python -m pip install -U pgadmin4 venv仮想環境から抜けて、pgadmin4のサービスを再起動 (pgadmin4)# deactivate # systemctl stop pgadmin4 # systemctl start pgadmin4 # systemctl status pgadmin4 ブラウザでアクセスして確認。 【関連記事】 pgAdmin4をサービス化して自動起動設定 pgAdmin4をCentOS8にvenvでインストール

算定基礎届を電子申請をしようとして紙で提出

日本年金機構から算定基礎届に関する書類が届いたので対応したときの覚書。 環境: 株式会社、埼玉県川口市、マネーフォワードクラウド会計 今まで紙提出で全く不便がないけれどGビズIDを今年取得したので電子申請に関して調査してみた。 電子申請に関する公式説明サイトは下記 電子申請・電子媒体申請(事業主・社会保険事務担当の方)|日本年金機構 … ご利用案内の動画を見て、やっぱり紙で提出することにした(笑) 紙での提出手順 マネーフォワードのクラウド給与で6月までの給与を確定する クラウド社会保険へ移動し、会社手続き → 提示決定で追加する。 名前は「2022年算定基礎届」 事業所情報を確認 厚生年金/事業所番号: 毎月送られてくる保険料納入告知額・領収済額通知書に記載 厚生年金/事業所整理番号: 同上 健康保険/事業所整理番号: 健康保険被保険者証の一番上の「記号」 新規作成 一覧から「編集」ボタン → データ登録 一覧から「申請」ボタン → 申請届PDFを更新 → ダウンロード 送られてきた算定基礎届に転記(捺印不要) 一覧から「申請」ボタン → 提出方法を紙、提出日を選択、完了にチェックして保存 郵送 【関連記事】 情報処理支援機関認定制度「スマートSMEサポーター」 一人社長の給与(役員報酬)を変更 社会保険の算定基礎届を指定会場で提出 株式会社設立④:社会保険

法人電話番号の変更届出

048の法人電話番号を変更したときの覚書。 環境: 株式会社、埼玉県川口市 法人電話番号変更の経緯 起業して便利に使っていた電話転送サービスが「電気通信事業法改正で050以外は使えなくなります」と連絡が来た。 その改正を調べてみると、活動する拠点を確認できれば048などの地域性のある番号は使えるとある。 その事務作業を考慮して050だけにする決断だと思う。 問い合わせしてみても同じ電話番号を他社に移管することはできないらしい。 当時は03や048を取得できるという謳い文句で広告していたにも関わらず、ちょっと無責任な感じもするがしょうがない。 これも経験値の一つ。 顧客への案内、名刺、ホームページ、届出済み機関への変更届などやることにした。 03plusを契約 → キャンセルしてTwilioにした 起業家のコミュニティで聞いたところ「03plusを問題なく使っています。」というコメントをもらったので、03plusで新規電話番号を取得してみた。 固定電話番号がスマホのアプリでも電話機でも使える!03plus(ゼロサンプラス) 月額980円。 申し込み自体は簡単。 ウェブとスマホアプリを連動するのに少し驚いた。 契約後にTwilioの方が面白そうなのでキャンセルした。 0円スタートプランだったので解約しても決済されない。 Twilioは月額546円(4.5米ドル)。 購入するためにBundles登録が必要。 Twilioの登録は別記事にした。 Twilioにアカウント作成してBundle登録 各種届出 会社の電話番号が変わったので、どこに届出を出すべきか調べながら対応。 税務署: 次回確定申告のときでOK 市役所: 次回確定申告のときでOK(川口市税課へ電話して確認した) 県税事務所: 次回確定申告のときでOK(たぶん) 年金事務所:  変更書類を郵送 参考:  事業主の変更や事業所に関する事項の変更があったときの手続き|日本年金機構 信用金庫: 来店して変更届出が必要(届出印が必要) eLTAX: 連絡先は携帯電話だったのでOK(利用者情報照会画面) e-Tax: 連絡先は携帯電話だったのでOK その他変更メモ 会社ホームページ Google My Business Facebookページ  登録ドメインのWhois情報/担当者ハンドル情報 【関連記事】 Twilioで

Twilioで転送電話→出なかったら留守電応答→音声録音→メール送信

Twilioで留守電を実装したときの覚書。 環境: 株式会社、0120番号 ちなみに掛かってきた0120を090の携帯番号に転送しているのでスマート留守電を使う方法もある。 個人携帯はスマート留守電を便利に使っている。 参考:  スマート留守電を試す Twilio Studioで留守電機能実装 やりたい事 0120番号に掛かってきて5秒間出なかったら自動応答 留守電に音声録音 通知メール送信(0120はSMS送信できないから) 参考サイト Twilio Studio・Twilio Functions・SendGridを使って、録音メッセージをメールに転送する方法 | SendGridブログ Twilio Studioを使った電話転送の作り方 Forward Voicemail Recordings to Email w/ Studio, Functions, & SendGrid SendGridのアカウント作成 SendGridは2019年にTwilioの買収が完了して完全子会社化した。 構造計画研究所(kke.co.jp)の日本語化されたサイトで昔登録したけど、Twilio同様に本社のアカウントを作成することにした。 住所と名前はローマ字で登録。 メニューのAPI Keys -> Create API Key API Key Name: Twilio Functions API Key Permissions: Full Access 表示されたAPI Keyをコピーしておく。 送信元ドメイン認証(SPFとDKIM)を設定する。 DNSにCNAMEレコードを3行追記するだけなので簡単。 参考:  ドメイン認証の設定方法 | Twilio Twilio Functions + Studioで応答フロー作成 TwilioメニューのExplore Products -> Functions and Assets メニューにPin止めしておく 「Create Service」して参考サイトの通りに作る。 ただ英語サイトの方が新しかったので、@sendgrid/mailモジュールのバージョンは7.6.0にした。 Twilio Studio・Twilio Functions・SendGridを使って、録音メッセージをメールに転送する方法 | SendGr

dnf経由でgsutilをインストール(Python3.9の環境)

gsutilがdnf経由でインストールできるようになっていたのでやってみたときの覚書。 環境: CentOS Stream 8, Python 3.9.7, gsutil 5.10 pip版gsutilをアンインストール まずはpip経由でインストールしたのを削除する。 pip-autoremoveを使うと依存関係も含めていい感じにアンインストールしてくれるそうなので使ってみた。 # python -m pip install pip-autoremove 依存関係を確認してアンインストール。 # python -m pip show gsutil Name: gsutil Version: 5.10 Summary: A command line tool for interacting with cloud storage services. Home-page: https://cloud.google.com/storage/docs/gsutil Author: Google Inc. Author-email: buganizer-system+187143@google.com License: Apache 2.0 Location: /usr/lib/python3.9/site-packages Requires: argcomplete, crcmod, fasteners, gcs-oauth2-boto-plugin, google-apitools, google-auth, google-reauth, httplib2, monotonic, pyOpenSSL, retry_decorator, six Required-by: # pip-autoremove gsutil 依存関係も削除された。 確認してアップデートがあればやっておく。 # pip list # pip list -o # pip install --upgrade certifi requests setuptools urllib3 psycopg dnf経由でgcloud cliをインストール 公式サイトを参考に。 gsutil をインストールする  |  Cloud Storage  |  Google Cloud repoファイルを作成する。teeコマ

Twilioで取得した0120番号を携帯へ電話転送

Twilioで取得した電話番号を携帯へ転送設定したときの覚書。 環境: 株式会社、0120番号 参考サイト Twilio Studioを使った電話転送の作り方 Twilio Studioで転送設定 まずは参考サイトの通りにやってみる。 Explore Products -> Studioで起動。 Create a flow Call Forwardingを選択。 forward_callのCONNECT CALL TOを+8190xxxxxxxxに変更。 TIMEOUTは15秒に設定。 SaveしてPublish 戻ってPhone Numbers -> Manage -> Active Numbersから転送した番号を選択。 A CALL COMES INをStudio Flowにして作成したCall Forwardingを選択してSave 0120の番号に掛けてみて確認。 簡単…。ちょっと感動。 発信元を転送先へ通知したい 転送先のスマホには「非通知」で表示されるので、発信元の電話番号を表示できないかと調査。 Twilio StudioのCONNECT CALL TOの「CALLER ID」に設定した値が転送先へ通知される。 デフォルトの{{contact.channel.address}}が掛かってきた発信元番号。 でも、セキュリティ上の理由から発信元番号は通知できない。 ({{contact.channel.address}}で試してみたが非通知になった) Studio User Guide | Twilio | www.twilio.com {{flow.channel.address}}に設定するとTwilioで取得した番号になる。ひとまずこれでOK。 Twilioの管理画面ログインすれば、着信履歴で発信者番号が分かる。 Monitor -> Logs -> Calls データとして残っているので、API経由で取得することもできる気がする。 次回はTwilioを使った留守電機能を実装予定。 【関連記事】 Twilioにアカウント作成してBundle登録

一般的なモニターをキャリブレーションする方法

ハードウェア・キャリブレーションに対応していないモニターをソフトウェアキャリブレーションしたときの覚書。 環境: Windows 10, NVIDIA Quadro P1000, X-rite i1Display Pro, i1Profiler v3.5.0 使用モニター一覧 EIZO ColorEdge CS2740 (ハードウェアキャリブレーション対応) BenQ SW271 (ハードウェアキャリブレーション対応) JAPANNEXT JN-315IPS144UHDR (ハードウェアキャリブレーション未対応) 今回購入したのはJAPANNEXTのモニター。 JAPANNEXT HDMI 2.1対応 31.5型 144Hz対応4Kゲーミングモニター JN-315IPS144UHDR – JAPANNEXT 4K WQHDなど超解像度、ゲーミング、曲面など特殊液晶モニター ソフトウェア・キャリブレーションはグラフィックボードの出力自体を調整する。 参考:  ソフトウェア・キャリブレーションとハードウェア・キャリブレーションの違い | EIZO株式会社 ソフトウェアキャリブレーション手順 i1Display Proを購入済みなので、i1Profilerをダウンロードしてインストール。 参考: i1Display Proキャリブレーション; X-Rite  [トレーニング&サポート]→[i1Profiler (i1Publish) v3.x.0] i1Profilerを起動 i1Display Proを接続 ADCは有効にせず「測定を開始」 参考:  Apple Display Connector - Wikipedia なぜかモニターのOSDメニューから明るさやコントラストが変更できないため、そのまま次へ。 JAPANNEXTのサポートに問い合わせして、画質調整 → HDRをOFFにするとマニュアルで明るさ調整が可能になることが分かった。 プロファイルを保存。 「指定された画像をロード中にエラーが発生しました。画像に埋め込みプロファイルがあり、8-bit画像であることを確認してください。」とエラーメッセージが表示された。 プロファイル後は赤っぽくなる。モニター再起動。 再起動後は綺麗に表示されている。 Windowsの設定 → ディスプレイでカラープロファイルが適用さ

Twilioにアカウント作成してBundle登録

Twilioを利用して会社用電話番号を取得したときの覚書。 環境: 株式会社、埼玉県川口市 Twilioにアカウント作成 Twilioを日本で利用するのにTwilio本社経由とKDDI経由がある。 参考:  日本でのTwilioアカウントについて – takeshi.furusato.blog さらにソフトバンクもTwilioと提携して固定電話サービスを始めるニュースが出た。 参考:  Twilio、ソフトバンクと提携して国内全域の固定電話番号で利用できるクラウド音声通話サービスを提供開始~電話回線の工事が不要で簡単に導入可能~ | 企業・IR | ソフトバンク 048の番号が欲しかったので後で要チェック。 前に調査したときにアカウント作成してた。 参考:  FreePBX + Twilioで外線電話を着信(調査編) Bundle登録 必要な書類一覧 Completed Japan Regulatory Bundle Application(バンドル申請書) 公式サイト からWordファイルをダウンロードして記入→印刷→直筆サイン&代表印→スキャン→PDF結合してアップロード Corporate registration document(登記簿謄本) 履歴事項全部証明書をアップロード Corporate registration showing name of the Authorized Representative(代表者の会社登録情報) 履歴事項全部証明書をアップロード My Number Card*(マイナンバーカード) Driver's License(運転免許証) 以下は登録するまでの経緯 最初TwilioアカウントにKDDI経由のアカウントがあるというのを知らなかったので、下記手順でBundle登録したら翌日にRejectedの通知が来た。 KDDIウェブコミュニケーションズ Twilio サポートからは取引時確認が必要という案内が来た。 Twilio Bundlesの設定と登録方法【法人様の本人確認】 Twilio公式経由のアカウントなので公式ヘルプを参考にしながら再登録してみた。 Japan: Regulatory Guidelines | www.twilio.com 日本向け - Regulatory Bundle(規制情報)に関わる

お知らせ投稿編集用のフリーのWYSIWYGエディタ

WordPressのお知らせ投稿を自前の管理画面で実装しているときに、HTMLを編集するWYSIWYG(What You See Is What You Get)エディタは何がいいのかと調査したときの覚書。 環境: WordPress 5.9.3 WYSIWYGの一覧はWikipediaが参考になる。 WYSIWYG - Wikipedia TinyMCE WordPressに組み込まれている有名なWYSIWYGエディタ。 ライセンスは6.0(2022年4月リリース)からMIT。 Tinyという会社がメンテナンスしている。 The Most Advanced WYSIWYG HTML Editor | Trusted Rich Text Editor | TinyMCE What’s new in TinyMCE 6.0 | TinyMCE フリー版にはTable編集機能がない。 コマーシャルライセンスで使うならCKEditorよりTinyMCEがお勧めという記事をアップしている。 CKEditor vs TinyMCE | Why TinyMCE is the Best CKEditor Alternative | TinyMCE CKEditor TinyMCEと同じ2大WYSIWYGエディタの一つ。 コマーシャルライセンスのフリー版は5ユーザーまで。 フリー版にTable編集機能あり。 WYSIWYG HTML Editor with Collaborative Rich Text Editing summernote コミュニティで開発しているオープンソースのWYSIWYGエディタ。 jQueryベース。MITライセンス。 Table編集機能あり。 Summernote - Super Simple WYSIWYG editor 「メディアの追加」の実装が大変そう。

人口メッシュ統計を作成するには

市区町村ごとではなく、病院を中心に半径〇kmの人口統計を得るにはどうすればいいか調査したときの覚書。 総務省統計局が地域メッシュ統計の作成方法をまとめている。 統計局ホームページ/地域メッシュ統計 東京⼤学空間情報科学研究センターの資料が具体的で参考になりそう。 【PDF】簡易100mメッシュ⼈⼝データの作成|東京⼤学空間情報科学研究センター すでにGoogle Map APIと連動したjSTAT MAPが利用できる。 地図で見る統計(統計GIS) | 政府統計の総合窓口 国土数値情報ダウンロードサービスから区域や施設データをダウンロードできる。 国土数値情報ダウンロードサービス 医療圏データには人口情報も付随しているので使えそう。 国土数値情報 | 医療圏データ 商用利用も可能。コンテンツを利用する際は出典を記載する。 利用規約 【関連記事】 e-StatのAPIを利用してデータ分析【API利用準備編】

git for windows 2.35.2 fatal: unsafe repository

Gitに脆弱性があるということでアップデートしたら下記エラーが表示されるようになった。 fatal: unsafe repository ('//vm-dev3/httpd/my-project' is owned by someone else) To add an exception for this directory, call:         git config --global --add safe.directory //vm-dev3/httpd/my-project 環境: git version 2.35.2.windows.1 開発環境はWindowsから仮想マシン(CentOS)の共有フォルダにアクセスしている。 言われた通りsafe.directoryに追加してみる。 PS W:\my-project> git config --global --add safe.directory //vm-dev3/httpd/my-project PS W:\my-project> git status warning: encountered old-style '//vm-dev3/httpd/my-project' that should be '%(prefix)//vm-dev3/httpd/my-project' fatal: unsafe repository ('//vm-dev3/httpd/my-project' is owned by someone else) To add an exception for this directory, call:         git config --global --add safe.directory //vm-dev3/httpd/my-project 調べてみると「%(prefix)/」を追記する必要があるという情報があった。 Git for windows 2.35.2 can not add exception safe.directory - Stack Overflow PS W:\my-project> git config --global --edit [safe] dire

PHPセッションの設定確認

Oauthのstate用にセッションIDをハッシュ化して開発している時に本番環境でうまく動かなかったので、一つずつ原因を紐解いていったときの覚書。 環境: CentOS Stream 8, nginx 1.20.2, PHP 7.4.19, WordPress 5.9.2 Android上のChromeで動作確認している。 デバイスの開発者向けオプションを設定する  |  Android デベロッパー  |  Android Developers Remote debug Android devices - Chrome Developers PHPセッション設定 まずはPHPのセッション関連設定を確認する。 セッションIDの置き場所の確認 # less /etc/php-fpm.d/www.conf php_value[session.save_handler] = files php_value[session.save_path]    = /var/lib/php/session セッションのタイムアウト時間設定の確認 # php -i | grep session session.cookie_lifetime => 0 => 0 session.gc_maxlifetime => 1440 => 1440 session.name => PHPSESSID => PHPSESSID cookie_lifetime=0の場合はブラウザが閉じるまでセッションを維持する。 gc_maxlifetime=1440は秒数。24分経過するとガベージコレクションで(一定確率で)消去される。 念のためphpinfo()をどこかに設置して、php-fpm経由のphpinfo()を表示して確認する。 セッションID生成の動作確認 PHPセッションの基本的な動作は公式サイトを参考に。 PHP: 基本的な使用法 - Manual session_start()したときに生成したセッションIDを確認する。 ChromeブラウザのDeveloper Toolsの「Network→(リクエストしたパス)→ Cookie」を見る。session_start()するパスではPHPSESSIDが生成されているはず。 Name: PHPSESSID Val

JavaScriptでシークレット/プライベートモードか判定できる?

ブラウザがシークレットモード(Incognito mode/Private mode)だと予期せぬ不具合が発生するので、事前に警告するためJavaScriptで現在のモードを判断できるか調査したときの覚書。 シークレット ブラウジング - パソコン - Google Chrome ヘルプ Gist | Detect if the browser is running in Private mode (Promise based) ユーザーエージェント文字列を用いたブラウザーの判定 - HTTP | MDN Gistのサンプルコードは動作しないというコメントがある。 そもそもシークレットモードが検知できるのがセキュリティ的な欠陥という議論がある。 「Chrome」のシークレットモードを検知できる手法、研究者が指摘 - CNET Japan 今検知できたとしても、将来的に出来なくなる可能性が高そう。 事前に検知するのは諦めた。 IEのテストをしなくてよくなったと思ったら、意外な検査項目が増えた(笑) 【関連記事】 WordPressのSessionの仕組み LINE Notifyでメールアドレスがないユーザーとの問合せ機能を実現したい