パスワードはハッシュ化する!!紙屋02

こんにちは!
’23年度入社の紙屋です!
日に日に暑さが増すなか、台風もやってきて大変ですね。
私は出身が鹿児島県なので台風には慣れっこです。
学生のうちは台風が来ると「学校が休みになるんじゃないか」とそわそわしていましたが、社会人になると「台風きたら出勤どうしよう…」と不安でそわそわしてしまいます(笑)

現在は、課題として会員登録フォームをPHPでの実装、その後フレームワークを使った実装がひと段落終えたところです。調べながら、分からないところが教えていただきながらの実装だったので、ちょっとずつまとめをしていこうと思います。

まずはとりあえず機能の実装を!と考え、新規登録フォーム、検索機能、編集・削除機能を実装しました。その中でセキュリティ対策への考えはまだまだ足りず、データベースへ登録する際に、エスケープ処理を行わなければならないことは覚えていましたが、パスワードに対しては何も処理をしていませんでした。
レビューいただいた際に、「え・・ハッシュ化って?」「まだ処理がいるの?」と混乱しました…。なので、今回はハッシュ化について調べてみました。

今回、PHPプログラミングで実装した内容は、

です。
最初は直観的に

をそのままDBに登録していました。

レビューいただいた際に、このままでは、DBを攻撃された場合、個人情報が盗まれてしまう危険性があると教えていただきました。

確かに!ログイン情報を盗まれてしまったらなりすましなんて簡単にできますね。

password_hash関数をマニュアルで調べてみると、


◦$passwordには登録するパスワードの値が入って、
◦$algoにはハッシュ化に使用するパスワードアルゴリズム定数が入って、
◦$optionsには各アルゴリズムがサポートするオプションが入る
とのこと!

アルゴリズム定数のPASSWORD_BCRYPTを使うと
◦”$2y$” crypt フォーマットを使ったハッシュになる
◦長さは常に 60 文字
◦オプションのcostは省略時はデフォルトの10が入り、ハードウェアの性能が許容できるなら高くも設定可

とのことでした。
上記のpassword_hash()関数で登録しなおすことで、

ちゃんとハッシュ化されていました。
これで一安心です!

知らないことが多くて調べて、コーディングして、エラーと闘う日々です。
今後も、いろいろと忘れないようにまとめていきたいと思います。
では、また次回!!

WordPressのデフォルトアバターが表示されない(404エラーになる)問題

WordPressでデフォルトのアバターを表示させると、以下のようなGravatarのURLを生成します。

https://secure.gravatar.com/avatar/?s=60&d=mm&r=g

このURLが2023年8月9日現在404エラーとなっています。

次のようにパラメータの順番を変更すると正常に表示されます。

https://secure.gravatar.com/avatar/?s=60&r=g&d=mm

さすがにこれが仕様ということは無いと思うので、何かしら不具合が発生していると思われます。

Gravatarにお知らせしたいのですが、不具合を報告したり、お問い合わせするようなフォームが見つけられなかったので諦めました。

Gravatarの中の人ー!見てたら直してくれー!

Workaroundとしては、WordPressが生成するURLのパラメータを並べ替えることが考えられます。

以下のようにURLの生成箇所に用意されているフィルターでパラメータを並べ替えればよいでしょう。

Gravatarが修正されるまでの一時的な物なのでプラグイン化するほどではないかなと思います。

お使いのテーマのfunctions.phpに入れればよいのではないでしょうか。

2023年 新入社員ブログ 松井真治(第1回)

こんにちは!
2023年4月に入社した松井真治です。

自己紹介


入社する前は工学系の大学でコンピュータについて学んでいました。
プログラミングは勿論、コンピュータに関する幅広い範囲を学んでいました。
卒業研究では、「オセロにおけるDueling Networkを用いたQ-learningの効果検証」をテーマにしました。初めて聞くワードが出てきて困惑している人が多いと思いますが、平たくいうと機械学習に関する研究をやっていました。そんな情報系の出身の私ですが、web系は未経験です。

外部研修

私は、4月中旬から5月末までの間外部研修に行ってきました。研修の間で学んだことは以下の通りです

  • IT基礎
  • Linux
  • プログラミング基礎(HTML,CSS,Javascript)
  • データベース(MySQL)
  • PHPプログラミング
  • Laravel
  • git
  • システム開発演習

IT基礎では、これからITで働くにあたって最低限覚えないといけない(それどころか基礎教養として重要)ことについて学びました。日常でも使う単語が多く、ITに関わっていなかった人たちでもわかるような内容でした。

Linuxでは、私たちが当たり前のようにできているファイルの作成やフォルダーの作成などをコマンドを使って行ったり、ファイルのアクセス権限の変更を行いました。GUIだと面倒なことをコマンドでできるのは便利ですね!

プログラミング基礎では、私たちがよく見るWebサイトの基本的な作り方について学びました。書いたサイトのコードは検証ツールで見れますので、外部に公開するときは注意が必要ですね!

データベースでは、データの検索からテーブル・データベースの操作を行いました。IDやメールアドレスといった重要な情報を入れるので、万が一のことがあったら大惨事です。データが破損したり、誤ってテーブルに入っている情報が全て消してしまったことありましたので、慎重に扱わないといけないことを学びました。

PHPプログラミングでは、PHPを用いて値を次のページに保持させたり、データベースへの干渉を行ったりしました。同じWebに関するプログラミング言語でもJavascriptとの違いをあげるとしたら、PHPはブラウザ側ではなく、サーバ側に干渉する言語であるということですね。また、PHPではデータベースと連携することができますが、非常に難しかったでした。

Laravelでは、Webアプリケーションのフレームワークとは何かから始まり、Webアプリケーションの作成を行いました。よく使われている処理をフレームワークとして統一できれば非常に便利ですね!そんなフレームワークの一例としてLaravelを使いました。例えばデータベースとの連携をLaravelで簡単に実現できるというのは大きなメリットです。しかし、研修の間で全て覚えることは難しく、概念しか覚えることしかできませんでした(笑)

gitでは、複数人で作業を分割して統合していくような際に使うことでバージョンの管理や不具合の発見についてわかりやすくするものといった内容でした。共同でシステム開発をする際に便利ですね!

最後に他社の方々と10日間という短い期間でシステム開発演習を行っていきましたが、私のグループは4人で教科書売買システムのWebアプリケーションを作るといった内容でした。3日間で設計、5日間でWebアプリケーションの作成、2日間で作成したアプリケーションについての発表の準備を行いました。多くのエラーやバグと立ち向かい、講師からの丁寧なアドバイスや解説のおかげもあり、無事Webアプリケーションを作ることができた他、Laravelのコードの書き方やgitの使い方について理解することができました。最終的に問題なく発表を行うことができ、研修を終わらせることができました!

本日はここまでです。
次回は内部研修について書きます。
最後まで読んで頂き、誠にありがとうございました!