著者アーカイブ takahashi

takahashi 著者:takahashi

[間もなくGoogle ChromeでSSL必須化。確認しておくべきこと。] WebサイトSSL化の際に潜む罠

前回の記事では、WebサイトのSSL化に必要な証明書について説明をしました。今回は証明書に加えてサイトのSSL化に必要なこと説明します。

実は、サイトのSSL化を行うためには、単にSSL証明書をインストールして”https://”でアクセスする…だけではダメな場合があります。

例えば、httpsのサイトにアクセスした際に画像の赤枠のような盾のアイコンが出てくることがあります。

実はこれ、Chromeによって、セキュリティ上の問題でサイトの一部のコンテンツをブロックした際に表示されます。

なぜブロックされたのかは”開発者ツール”を開いてみるとわかります。
F12を押してみてください。

画面の端に、赤枠のような部分が出てきます。
これが開発者ツールです。

たとえば、このページの1行目のエラー。
内容を簡単にいうと”このサイトはhttpsでアクセスしているのに、同サイト内にhttpでアクセスしているリンクが混ざっている。”

といった感じになります。
実は、サイト自体へのアクセスはhttpsになっていても、サイト内に含まれている画像、css、javascriptなどへのリンクがhttpになっていると、基本的にブロックされてしまいます。

これは、リンクされているコンテンツが不正に乗っ取られた場合、アクセス先のサイトがたとえhttpsであったとしても表示を改変されたり、入力した情報が盗まれてしまう場合があるためです。

こういったセキュリティ上の問題も確実に防止するために、Chromeをはじめとする最近のブラウザでは、httpsサイト内にあるhttpリンクをブロックする様になってきています。

ではどのように対策すればいいのか、というところですが、先ほど書いたようにjavascript、css、画像などへのリンクがhttp://で書かれてしまっていることが原因なので、それらをすべてhttps://で始まるように書き換えてしまえばOKです。

ただし、リンク先がSSLに対応していないと、httpsに書き換えただけでは利用できません。その場合はまずリンク先のサイトをSSLに対応させる必要があります。
また、もし自分で触ることのできないリンク先がSSLに未対応の場合、残念ながらSSL対応させたサイトでは利用できません。

代替えの方法を用意する必要があります。

少しでも参考になりましたら幸いです。

takahashi 著者:takahashi

MBaaSのFirebase、脆弱性により情報流出が発覚

Googleが提供しているサービスであるFirebaseから、なんと合計1億件以上の情報流出(Gigazine)が確認されたようです。

合計1億件以上の個人情報がFirebaseの脆弱性によって公開状態に – Gigazine

Firebaseはモバイルアプリのバックエンドに必要な機能(ログイン管理やプッシュ通知など)を一括して提供してくれるmBaaS(mobile Backend as a Service)です。

Firebaseの始め方 – Qiita

Firebaseを使うことで、本来自前でサーバーを用意してアプリのバックエンドを構築しなければいけないところを、Firebaseで対応している機能であればすべてこのサービス上で賄える、というサービスのようです。(恥ずかしながら知りませんでした。)

Gigazineの記事によると、Firebaseとの連携処理がちゃんと行われていないアプリが原因だったとのことです。

この脆弱性はFirebaseデータベースの認証が適切に行われていないときに顕在化するもの。2017年第2四半期に見つかった、アプリ開発者によるデータ格納の保護が不完全なときに情報が露出してしまう「HospitalGown」と呼ばれる脆弱性の変種であると考えられています。

Appthorityのディレクターであるセス・ハーディ氏は「このFirebaseの脆弱性は膨大な量の機密情報を公開してしまうような重大かつ危機的なものです。多くの『脆弱なアプリ』があり、多種多様なデータが公開されてしまっているという事実は、企業がアプリの開発者に頼れず、アプリストアによるチェックや単純な『マルウェアスキャン』でも対策できないということを示します。GDPRやHIPAA、PCIといったデータ保護の規則を守るために、今後はこの種の脆弱性を見つけられるよう、深いアプリ分析に投資する必要があるでしょう」と述べています。

Firebaseのサービスを利用していなければ影響を受けなかったインシデントなので、個人的には”パブリッククラウドの危ない面”が露呈してしまったのかな、という印象です。

対策がされているとはいえ、複数のユーザーで共有している環境である以上、使用する際はこういった危険性も考えて置く必要がありそうですね。

takahashi 著者:takahashi

[間もなくGoogle ChromeでSSL必須化。確認しておくべきこと。] SSLって何?

いよいよ、前から予告されていたSSL必須化(HTTP(非暗号化)接続というだけで警告を表示するようになる仕様変更)がChrome 68から適用されます。

いよいよGoogleが本気。Chrome 68から全HTTPサイトに警告! – 常時SSL Lab.

もしあなたがサイトを運営していて、SSLを利用可能にしていない場合、画像の下のな表示がアドレスバーに常に表示されるようになります。
回避するためには、サイトをSSLに対応させないといけません。

そもそも、SSLとはなんぞや…という方のために、簡単に説明します。
SSLを理解する前に、インターネットの仕組みを簡単に簡単に理解しておく必要があります。

今は家にPCやスマホ・タブレットが複数台ある、という方は多いと思います。
複数台のPCやタブレットなどを同時にインターネットへ接続するために、ルーターを設置している方が多いと思います。

細かい説明は割愛しますが、ルーターを設置すると、大抵の場合はそこにLANと呼ばれるネットワークが構築され、そのLAN全体をルーターを介してインターネットに接続することで、ルーターに接続されている複数台の端末が、同時にインターネットへ接続できるようになります。

簡単に言ってしまえば、インターネットというのは、ルーターやLANを相互に接続してできた巨大なネットワークなんです。
つまり、インターネット上には、自宅に設置したルーターのように、あなたの通信を中継する機器をいくつも経由して、目的のサイトへたどり着けるようになっています。


引用元:JPRS

そしてこの”通信を中継する機器”は、仕組み上誰でも設置が可能です。

また、インターネットのベースとなった仕組みでは、”一部の経路が切断されても、他に通信経路があれば通信を継続できるようにする”仕組みになっています。
先程書いたように、インターネットはネットワークを相互につないでいる構造になっているので、目的のサイトにたどり着くまでの経路は何通りもあります。

そのうちのどの経路が選ばれるかは一定ではなく、状況に合わせて、最も最適なルートが選択されます。

つまり、自分がインタ―ネットへ送信した情報がどの経路を通過するのかはわからない(決まっていない)のです。

通信経路は固定ではなく、かつ経由する機器もだれのものかわからない…そんな仕組みなので、例えばもし経由する経路上にサイバー犯罪を企てる人が設置した機器を経由してしまった場合、自分が送信した解読された場合はその内容が盗まれてしまったり、改変されたりしてしまう可能性が出てきます。

もしその時に自分が送っていた情報がパスワードやクレジットカード情報だったら…最悪ですよね。

そうならないために、自分が送付する情報を”暗号”にして、自分と通信相手にしか解読することができないようにする仕組みがあります。

これが、SSL(TLS)と呼ばれるものです。

SSLを利用するためには自分のサイトが動いているサーバーに、SSL証明書をインストールする必要があります。
SSL証明書は発行を行っている”認証局”と呼ばれる業者から取得する必要があります。

通常は有料で、有効期限があるので、有効期限が近づくたびに購入しなおす必要があります。

ただし、最近はLet’s Encryptという、更新するまでの期間が短い代わりに無料で利用できるSSLもあります。

これでSSLをサイトに導入して対応完了…!と行きたいところですが、まだ他にも気を付けないといけない点があります。

また次回説明します。

takahashi 著者:takahashi

JDKの無料配布はJava 10が最後となり、11以降は有償化される模様

“30億のデバイスで走るJava”という宣伝ができるぐらい、今やITの世界で欠かせなくなったJava。
そんな Javaですが、いままで開発ツールのOracleJDKは無料で公開されており、だれでも利用することができました。

ところがこのOracleJDK、少し前にJava11から有償化されることが決まりました。

Oracleが無償でJDKを提供するのは「Java 10」が最後、Java 11以降はOSSコミュニティでのサポートに – スラド

Java 11からは、現在のようにOracle公式サイトからダウンロードできる形ではなくなり、有償契約した人のみ入手することができるようになります。

その代わり、オープンソース版であるOpenJDKに対し、現OracleJDKが備えている機能と同等のものが公式に導入されることになっているようで、機能面ではOracleJDKとOpenJDKは同等になるため、OpenJDKを使用すれば今後も無料で使い続けられるようです。

ではOracleJDKとOpenJDKの大きな違いは何かというと、Oracle公式によるサポート、さらにはサポート期間の違いのようです。

OpenJDKのサポート期限は次のリリースまで、となっていますが、OracleJDKについては3年ごとにリリースから8年間サポートされるLTS版が出されるようです。

Oracle Javaの無償配布終了で何が起こるのか? – セカイノカタチ

“Oracle JDK有償化”と聞くと、「なんてこった…」と一瞬思ってしまいますが、ふたを開けてみたところ、かなりユーザーにとってメリットとなる変更のようですね。

takahashi 著者:takahashi

USB Type-c(Thunderbolt3)で広がる外付けGPUの可能性

最近主流になりつつあるUSB Type-c。
それに共存させられる規格として、”Thunderbolt 3″というのがあります。

まだ流通量としては少ないので、知らない方も多いかと思います。

このThunderbolt 3ですが、対応しているノートPCでは大きなメリットがあります。
それは”外付けGPU”が利用できること。

ノートパソコンでもVRで遊べる!VRゲームに「外付けGPUボックス」という選択肢。 – VRInside

今までは機種専用のGPUボックスを出しているメーカーはありましたが、”特定の規格に対応してさえいればどのPCでも使える!”というものはなかったので、部品を交換することができないノートPCの場合、実質的に限界を超えるスペックを要求するゲーム・アプリを動かしたくなった時点で、PC本体の買い替え時となっていました。

しかし、まだまだちゃんと動作するPCを、ゲームが動かないという理由だけで買い換えてしまうのはもったいないですし、普段ゲーミングPCとして使わないのに、ゲーミングノート特有の大きい筐体を持ち歩くのもなかなか大変です。何より、ゲーミングPCは高額である場合が多いので、買い換えようと思ってもすぐに買い替えできない場合もあると思います。

外付けGPUに対応していれば、CPUさえそこそこの性能を持っていれば、所謂モバイルPCであってもハイエンドGPUを接続してゲームなどのアプリを動作させられますし、スペックを上げる場合も、GPUだけ取り替えれば対応できます。

選べるノートPCの幅とGPUの性能を両立できるのはとてもうれしいですね。

takahashi 著者:takahashi

FuelPHP初期設定時に”It is not safe to rely on the system’s timezone settings.”エラーが出た時の対処法

先日、自分用にFuelPHPのテスト環境を作成していた時のこと。
ファイルやウェブサーバー周りの設定が終わって、テストでFuelPHPを動作させたところ…

Fuel\Core\PhpErrorException [ Error ]:
date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.

初めて見るエラー(汗
前回別の環境でセットアップした時はこんなエラーは出たことがなく、原因がわからなかったのでちょっと焦りました。

困っていろいろ調べていたら、こちらのサイトを発見。

[PHP]php.iniのtimezoneを設定する – Qiita

どうやら、PHP自身にデフォルトタイムゾーンを指定しないとダメ見たいです。

今回はCentOS7を使っていたので、php.iniは
/etc/php.ini
にありました。

php.ini内の

[date]セクションの部分に、赤枠のように記入します。

date.timezone = "Asia/Tokyo"

これでphp.iniを保存し、Apacheを再起動。

再度実行してみると

無事スタートページが表示されました。

takahashi 著者:takahashi

[macOS] alt + tabでWindowsのようなアプリケーション一覧を表示する方法

macOSでウインドウ切り替えをする際、Windowsのウインドウ切り替えの感覚で command + tabキーを押すとこんな表示が出てきます。

これ実は、同じアプリケーションのウインドウを複数開いていても、一つのアプリとしてしか表示されません。

Windowsはこんな感じ
Windowsのマルチタスク機能の感覚で操作するとエッってなりますね…w

実は、macには標準でキーボートショートカットを編集する機能があります。

アップルメニュー -> システム環境設定
から
“キーボードを選択”

コレです。
command + tab
は書き換えることができませんでしたが、

alt + tab

は書き換えることができたので、これをmission controlに割り当ててみます。
画面の”mission control”の項目をダブルクリックすると、入力待機状態になるので、
実際に設定したいショートカットキーを押します。

これでalt + tabを押すとmission controlが呼び出せるようになりました。

OSごとにキーボードショートカットがかなり違うと、かなり覚えるのが大変(癖で別OSのショートカットキーをつい押してしまう)なので、似た操作にそろえておくだけで大分楽になりますね。

ご参考までに。

takahashi 著者:takahashi

chromeがインラインインストール機能を削除

Google Chrome を使っていると、例えばセキュリティソフトなどをインストールした際、いつの間にか拡張機能が追加されていることがあります。
この機能は”インラインインストール”と呼ばれており、Chrome ウェブストアを経由することなく拡張機能をインストールする(させる)ことが可能になっていました。

ところが最近、このインラインインストールの機能を悪用する開発者が増え、Googleへの苦情が増加していたようで、しばらくは悪質な拡張機能とそうでないものを判別することで対応していたようですが、とうとう、全面的に廃止が決まったようです。

Google、Chrome拡張のインラインインストール廃止へ – スラド
Google、Chrome拡張機能のインラインインストールを終了へ 悪用への苦情受け – ITMedia

インラインインストール廃止は3段階で進められる。まず、6月12日以降に新規公開された拡張機能では既にインラインインストールが無効化されており、chrome.webstore.install()メソッドを呼び出そうとすると自動でChromeウェブストアにリダイレクトされるようになっている。9月12日以降は既存の拡張機能でもインラインインストールが無効となり、Chromeウェブストアへのリダイレクトが行われる。12月初めに安定版リリース予定のChrome 71では、インラインインストール用のAPIメソッドが削除されるとのことだ。

ということで、現時点で新規にインラインインストールされる拡張機能についてはインラインインストールさせようとすると自動でChromeウェブストアに誘導され、最終的にはChrome 71のリリース時点で機能そのものが無効となるようです。

ただ、ユーザーの許可を求めずにいきなりインラインインストールさせてくる無作法なアプリもあり、時にはインストールされていたことすら気づかないこともあったので、ユーザーがインストールされる拡張機能を確認した上でインストールできるようになることは、とてもいいことではないかなと思います。

takahashi 著者:takahashi

Mozillaの開発者”GeckoはWebkitに勝てないと思っていた”

最近になって、Mozillaの内部の開発者が10年前に書いた、”GeckoレンダリングエンジンはWebkitに負けると思っていた”という旨のコメントを公開していたことがわかりました。

Mozillaのベテラン開発者、10年前にはFirefoxは負けると考えていた – スラド

ソースの記事を読むと、当時Firefoxが最盛期を迎え一定の地位を築きつつも、新しく出現したWebkitの革新性に危機感を抱いていたことがうかがえます。
実際、Webkitから派生したBlinkエンジンを搭載するGoogle Chromeは圧倒的人気を集め、現時点では利用者数ベースでFirefoxを圧倒的に下しています。

上記のスラドのコメント欄でも、利用者の間で昨今のFirefoxの存在意義(特にQuantum以降)が揺らいでいることがうかがえます。
一方で、”完全に自由なインターネット”を掲げるMozillaのFirefoxは、唯一の完全に非営利でオープンなプラットフォームであり、これは非常に大きな意味がありますが、それ以外の有利な点があまりない状態で、Chromeや他のブラウザと対等以上にやりあっていくのは難しいのかもしれません。

最近、Firefoxのシェアがついに10%を割ってしまったというニュースも出てきました。

もはやマイナーブラウザの域に? Firefoxのシェアがついに10%を切り一桁台に突入へ – INTERNET WATCH

Firefoxの今後が心配ですね…

takahashi 著者:takahashi

VisualStudo Codeの配色をSublime Text3のような配色に変えてくれるプラグイン”Monokai ST3″

自分はコードエディタとして”VisualStudio Code”を使用しています。
Codeは”VisualStudio”の名前を持つだけあって、簡易的なIDEさながらにかなり多機能です。

もともとはSublime Text 2をメインで使っていたのですが、日本語化プラグインなどを導入してもどうも日本語対応が上手くされず、使いづらさを感じていました。
AtomやBracketsとも比較しましたが、一番使いやすくて動作も軽かったのがVSCodeだったので、こちらに移行しました。

現在もVSCodeを使い続けていますが、一点だけどうしても不満な点が。

標準のテーマ色がなんとなく見づらい。
ダークな色調なテーマなせいか、あまり文字色わけも地味なのでわかりづらいなーと感じていました。

折角なら以前使っていたSublime Textと同じ配色だったら完璧なのになぁ…としばらく情報を探していたところ、
見つけました。

Monokai ST3 – Visual Studio Market Place

他にもMonokaiテーマはたくさんあるのですが、いずれもSublime Textとは程遠い配色になっていて見づらいものばかりでした。
このMonokai ST3は結構Sublimeの配色に限りなく近く、かなり見やすく感じました。。

コードの色分けも、デフォルトと比べると鮮やかな色が多いので見やすいですね。

見やすいテーマを探している方や、Sublime Textからの移行を検討している方は是非試してみてはいかがでしょうか?

Visual Studio Code