情報廃棄物最終処分場

情報の芥溜にも何か使い道があるかもしれない。Webと鉄道とバイクと音楽が好きな人の情報置き場

パスワードの暗号化・認証をPHPを通して学んだ(パクリまとめ)

tl;dr

認証はOpenIDとかソーシャルログイン使う。
だめならフレームワーク使う。

内容

契機

今日もPHPの講習を受けに行っていたが、ユーザー管理の実装で、
「今回はユーザー管理が主眼だから、パスワードについては簡単に実装するよ!
本ちゃんのシステムでは絶対にやらないでね!」
といった内容の記述があり、
このパスワードの認証について気になったので調べてみた。

しらべたこと

ちなみに使っていたテキストでは、sha1でハッシュ化したものをパスワードとしてMySQLにINSERTしていた。
(ハッシュ化とは、不可逆に文字やファイルを変換するもの。暗号化は復号ができるもの。) sha1:文字、データを40桁の16進数にハッシュ化する。

同じものであれば、出力されるハッシュは同じになる。そのため、ファイルが正しいものであるかの判断に使われることもある。
ただ、下記の記事のように、GoogleSHA1に勝った(超意訳)という話もあり、セキュリティ上心配だそうな。

www.itmedia.co.jp

で、PHPでは選択肢に出てくるのが、password_hash()関数。
これはハッシュ化する度に、違うハッシュが吐き出されるというもので、認証にはpassword_verify()という専用関数を用いるそうな。
でも、このpassword_hashについても、やはり限界はあるわけで。

結論、餅は餅屋

結局、100%の安全なんてものはないわけですが、極めて安全に近いのは、セキュリティを専門にしたものを使うという手段なわけです。
その手段としては、

  • OpenIDやソーシャルログインを使う
    認証についてはプロにやっていただき、我々はトークンのみ頂いてお仕事させていただきます。
  • フレームワークを使う
    クラウドを毛嫌いするような社長とかがいるような会社なら、自社実装にするしかありませんね。
    公式の関数で足りないならフレームワーク。これも専用のものを使うと安心ですね。

参照というか丸パクリ元

qiita.com

ナウいエンジニアについての記事(戸田奈津子訳)でもお世話になってます。

ZenHub使って一人アジャイル()推進

説明

2018年も終わり、勤め先のコーディング研修が大体終わった。
2019年からはphpの研修が始まるので、何かしら作業環境の改善を図りたい。

で、こんなの見っけた qiita.com

ほう、チーム開発意識とな。
そういやZenHubなんてものも入れてたから活用したいな

そうだ、ZenHubで一人アジャイル()、しよう。

ということで以下に現状やりたいことをはっつけていく。

やりたいこと

まずZenHubを使うにあたって、どうなっているか構造を整理する。上から順に含有関係。

※ZenHub特有のものには[ZenHub]

  • Workspace [ZenHub]
    リポジトリをまたぐような大枠
  • Repository
    リポジトリ。プロジェクトごと作成。
  • Epic [ZenHub]
    大きい単位でIssueまとめるやつ
  • Issue
    みんな色々投げるやつ

参考:
qiita.com

その他参照・未分類

ZenHubを使ったカンバン方式の開発について。 qiita.com

スクラム運用についてのメモ。パイプラインの設定を参考にしたい qiita.com

たまにやる自炊

ドキュメントスキャナ。ではなく一人暮らしのための自炊覚書。

一品

芋煮

  • 豚こま
  • 白菜 1/4
  • じゃがいも 2
  • 大根 1/4
  • しめじ 1袋
  • 糸こん 少々
  • 豆腐 1
  • ネギ 1/4本

option

  • 雪菜

発展

肉→牡蠣、味噌→ポン酢or(ほんだし+ごまドレ)

Win10にNode.jsを使うまでの最高に雑なハウツー(自分用)

TL; DR

このページでは以下のことを行った記録があります。

  • Windows10にUbuntuのShell導入(WSL)
  • Node.jsのインストール(.exeインストーラ使わず)
  • Nodeのバージョン管理に"n"を導入

当方の環境です。

  • 弊社マシン:Windows10
  • 小生の家:MacBook

契機

Web制作をやるにあたり、ナウでヤングな開発環境を少しでも導入してコーディングの負担を減らしていきたい。
ので、やれSass(SCSS)だの、やれPugだのと入れたいものは見つかってきた。
コンパイルIDE拡張機能でやってもいいのだが、設定をSyncさせると、OS間で原因不明のささやかな干渉が起きて、少しずつ毎日時間を取られてしまう。

なので、タスクランナーかなんかでコンパイルする方法を取ることにする。

よし、Node.js入れよう。(やったこと)

あまり環境に依存しないように、Nodeを使ってみる。
というか、前から使ってみたかっただけ()

手順1. Windows10にLinuxいれる(WSL)

Node.jsを入れるにあたって、どこに入れるかだが、Nodejs.exeなんてものでインストールするのもアホくさい。

すると、どうもWindows10からPowerShellなんてものがあるという。
今までもCUIとしてコマンドプロンプトとかいうものがいたが、lsと打っても無視するような無礼者だったので拙者はあまりお関わりになりたくない。
ただ、どこを見てもPowerShellはちょっと...というものが多かったのでMSYS2なんか入れてみたが、しっくり来ない。

探していると、WindowsLinuxを入れられるものがあるとか。
仮想ではなく、WSL(Windows Subsystem for Linux)というものを使ってLinux環境をエミュレートし、Windows上でLinuxが走る状態だとか。本当に軽い。
インストールは
↓こうやった
qiita.com
自 分 を 売 る

こうしてまずWinにLinux(Ubuntu)環境を手に入れた。

手順2. Node入れる

よく聞くところだとnvmだが、nというnodeのバージョン管理を導入した。
以下を参考にした。 qiita.com この記事通りだとnpmのパスが通っていないので、最後のコメント通り、npmについても同様にパスを通すとnpmと打っても使えるようになる。

手順3. Nodeのパッケージインストール

やっとこさ使える。使い方は、最近使い始めたので、変な使い方してるかもしれない。
真に受けず適度に間引いて見ること。

Nodeでは基本的にnpmを使ってパッケージ管理するようす。
パッケージのインストール場所は、

  • 作業しているフォルダ(ローカル)(プロジェクト?)
    ex)npm i -D パッケージ名 package.jsonに記録する場合
  • グローバル
    ex)npm i -g パッケージ名

の2つ。

ローカルだと、例えばgulpを入れた場合、使う場合に./node_modules/gulp/bin/gulpという場所を叩かないといけない(パスが通っていない)。
が、globalに入れると環境が汚れる。
↓以下によると、基本は-gしないで使うと良い様子。 qiita.com これに沿って行くと、自分の.bashrcにでも入れておけば良さそう。

ただ、いろいろと環境をまたいで使うことが多いので、極力package.jsonでまとめたい...
そんなお客様ぁ?にこれ。
qiita.com に ん じ ん し り し り

どうやらnpm2以降ならnpm runとすれば、package.json内のScriptを実行してくれるし、その中ならPATHが通るとか。
あと、PATHは$(npm bin)でパスを出力できるそうなので、それも使いみちがあれば。


おわり。