タグ

PHPに関するrryuのブックマーク (188)

  • bcryptの72文字制限をSHA-512ハッシュで回避する方式の注意点

    宅ふぁいる便から平文パスワードが漏洩した件を受けて、あらためてパスワードの安全な保存方法が関心を集めています。現在のパスワード保存のベストプラクティスは、パスワード保存に特化したハッシュ関数(ソルトやストレッチングも用いる)であるbcryptやArgon2などを用いることです。PHPの場合は、PHP5.5以降で使用できるpassword_hash関数が非常に便利ですし、他の言語やアプリケーションフレームワークでも、それぞれ用意されているパスワード保護の機能を使うことはパスワード保護の第一選択肢となります。 なかでもbcryptは、PHPのpassword_hash関数のデフォルトアルゴリズムである他、他の言語でも安全なハッシュ保存機能として広く利用されていますが、パスワードが最大72文字で切り詰められるという実装上の特性があり、その点が気になる人もいるようです(この制限はDoS脆弱性回避が

    bcryptの72文字制限をSHA-512ハッシュで回避する方式の注意点
    rryu
    rryu 2019/02/25
    マニュアルにバイナリセーフじゃないと書いてないのは罠すぎる…
  • go-pear.pharにバックドアが仕込まれていた - Qiita

    半年以内にgo-pear.pharを使った人は必ずチェックしましょう。 2019/01/19 PEAR公式Twitterアカウントからツイート。 このアカウント全然活動してない。 https://twitter.com/pear/status/1086634389465956352 A security breach has been found on the https://t.co/dwKlscDEFf webserver, with a tainted go-pear.phar discovered. The PEAR website itself has been disabled until a known clean site can be rebuilt. A more detailed announcement will be on the PEAR Blog once i

    go-pear.pharにバックドアが仕込まれていた - Qiita
    rryu
    rryu 2019/01/25
    サイト改竄で配布ファイルに悪意あるコードを仕込まれてしまったらしい。オワコンになったOSSはそれだけで危険性が高まってしまうのか…
  • PHPのハマりポイントのリンク集 - Qiita

    PHPのハマり情報のまとめです。主に罠な仕様、予想外の振る舞い、ドキュメントに詳しくは書いてない振る舞いについての情報をまとめていきます。ここに載ってない情報があればぜひとも教えて下さい。頂いた情報をもとに随時更新していきます。 PHPは引数が足りないときはエラーになるが、引数が多いぶんには何も言わない - Qiita PHPはときどき掛け算ができない - Qiita PHPのDateTime::ISO8601はISO8601ではない - Qiita SplFileObjectのREAD_AHEAD, SKIP_EMPTY, DROP_NEW_LINEPHPのバージョンによって挙動がバラバラな件 - Qiita PHP: iterable型はiterator_to_array()に渡しちゃいけない - Qiita PHPの正規表現で^$より\A\zがいい理由 - Qiita PHP:文字

    PHPのハマりポイントのリンク集 - Qiita
    rryu
    rryu 2019/01/24
    割とガチのハマりポイントだった。乗算のバグはやばい。
  • 2018年でサポート終了のPHP バージョン5、企業に迫る深刻な脅威:およそ6割のWebサイトが対象? - TechTargetジャパン システム開発

    関連キーワード PHP | 脆弱性 | Webアプリケーション Webサイト管理者がPHPのバージョンアップに向き合う時が来た 2018年のハロウィーンは終わったが、PHP バージョン5を使っている企業は一年中ホラーな状態に陥っているかもしれない。 PHPはオープンソースのスクリプト言語だ。調査会社W3Techsが最近発表したデータによると、PHPは全Webサイトのうち78.9%で使われており、その内PHP バージョン5を使っているWebサイトは全体の61.6%を占める。だがPHP バージョン5のセキュリティサポートは2018年12月31日で終了する。つまり2019年の年明けからは、PHP バージョン5以前のバージョンを使っている全サイトが、PHPの脆弱(ぜいじゃく)性に関連するセキュリティリスクにさらされる。 セキュリティ専門家は、以前からこの期限が迫っていることを認識していた。実際のと

    2018年でサポート終了のPHP バージョン5、企業に迫る深刻な脅威:およそ6割のWebサイトが対象? - TechTargetジャパン システム開発
    rryu
    rryu 2018/11/22
    古いレンタルサーバとかどうするんだろう。非互換の変更が多いからアップデートする訳にもいかないはず。
  • 徳丸浩の日記: 解答:間違ったCSRF対策~中級編~

    この記事は、先日の記事「問題:間違ったCSRF対策~中級編~」に対する解答編です。まだ問題を見ていない方は、先に問題を読んで(できれば自分で解答を考えて)からこの記事をお読みいただくとよいと思います。 それでは、解答を説明します。 はじめに 出題時のわざとらしさから、この問題のポイントはstrcmp関数の挙動にあると気づいた方が多いと思います。 if (empty($_SESSION['token']) || empty($_POST['token']) || strcmp($_POST['token'], $_SESSION['token'])) {  // ワンタイムトークン確認 die('正規の画面からご使用ください'); } そして、strcmpの引数はどちらもempty()によるチェックが入っています。また、$_SESSION['token'] は、状態遷移図(下図)により、NU

    徳丸浩の日記: 解答:間違ったCSRF対策~中級編~
    rryu
    rryu 2018/11/15
    配列かなあとは思っていたが、ドキュメントに無いNULLが返ってくるのは怖すぎる。
  • PHPで動くファミコンエミュレータを作った

    TL;DR PHPで動くファミコンエミュレータを作った php-terminal-nes-emulator画面描画は点字を使って文字出力コントローラは標準入力からfread() 経緯 2016年の2月にPHPで動くゲームボーイのエミュレータ、php-terminal-gameboy-emulator に衝撃を受けて、その実装の解説を勉強会やカンファレンスでトークしたりSoftware Design誌に書いたりしました。(*1) カンファレンスでのトークでは時間の都合もあって全体のごく一部しか話が出来ないのですが、Software Design誌では誌面をたっぷり頂いてCPU、メモリアクセス、画面表示とphp-terminal-gameboy-emulator のほぼ全域を解説出来たので満足し、その熱は落ち着いていました。 そんな中、9月に開催されたbuilderscon tokyo 201

    PHPで動くファミコンエミュレータを作った
    rryu
    rryu 2018/10/16
    端末に画像を表示するやつを使えばカラー表示もできるかも。
  • PHPのis_numeric関数は使うべきでないという話 - hnwの日記

    稿は私が前職の技術ブログで執筆した記事「そのis_numeric()は適切ですか?」を改題・再編集して掲載するものです。前職には許可を取ってあります*1。 稿ではPHPの関数is_numeric()の使いどころについて問題提起をしてみます。 is_numeric関数とは さて、まずはis_numeric()のリファレンスマニュアルを見てみましょう。 bool is_numeric ( mixed $var ) 指定した変数が数値であるかどうかを調べます。数値形式の文字列は以下の要素から なります。(オプションの)符号、任意の数の数字、(オプションの)小数部、 そして(オプションの)指数部。つまり、+0123.45e6 は数値として有効な値です。十六進表記(0xf4c3b00c など) や二進表記 (0b10100111001 など) は認められません。 http://php.net/m

    PHPのis_numeric関数は使うべきでないという話 - hnwの日記
    rryu
    rryu 2018/04/18
    is_emptyといい、PHPの判定関数は対象を欲張り過ぎていて使いづらい気がする。
  • 2018年のパスワードハッシュ - Qiita

    数年前であれば仕方なかったところですが、2018年の今となっては、パスワードハッシュの手動計算はもはや"悪"です。 まずログイン認証と称してmd5とかsha1とか書いてあるソースはゴミなので投げ捨てましょう。 hashやcryptは上記に比べればずっとマシですが、使い方によっては簡単に脆弱になりえます。 あと『パスワードを暗号化する』って表現してるところも見なくていいです。 PHPには、ハッシュに関わる諸々の落とし穴を一発で解消してくれるpassword_hashという超絶便利関数があるので、これを使います。 というか、これ以外を使ってはいけません。 以下はフレームワークを使わずに実装する際の例示です。 フレームワークを使っている場合は当然その流儀に従っておきましょう。 ハッシュの実装 データベース ユーザ情報を保存するテーブルを作成します。 パスワードカラムの文字数は、システム上のパスワ

    2018年のパスワードハッシュ - Qiita
    rryu
    rryu 2018/02/11
    2018年のと言いつつPHPのpassword_hash()関数の話。
  • PHP コミュニティでブーメランを投げ合うのはやめよう - Frasco

    私は約7年間、PHP でプログラミングをしてきました。その間に、私が発見したもの。それはフレームワークとライブラリ(コンテンツ管理プラットフォーム周辺のエコシステムなど)、そして、PHP を選んだプログラマーたちの巨大コミュニティです。私と同じツールを使っているにせよ、いないにせよ、プログラマーたちの多くは、当の友人になりました。私が参加したカンファレンスでの基調講演の多くから判断するに、私たちはお互いに助け合い、学び、成長し、より良いソフトウェアを構築し、キャリアにおいて次のステップを踏み出すときには、一丸となってお互いをサポートしてきたと思います。そう信じているのは、私だけではないでしょう。 言語としての PHP は、「まっとう」なプログラマーたちに、皮肉を言われ、馬鹿にされ、過小評価され、批判され、嘲笑されて、最低の極みともいえるような評価を受けてきました。そのプログラマーたちは、

    PHP コミュニティでブーメランを投げ合うのはやめよう - Frasco
    rryu
    rryu 2017/11/15
    ブメーランだから「お前が言うな」みたいなことを互いに投げ合っている醜い状態ということなのだろうか。
  • 診断文字列を打ち込まずにPHPのバージョンを推測する

    脆弱性診断においてApacheのバージョンを外部から調べる方法を複数の専門家がブログ記事に書いておられます。 Apache HTTP Serverのバージョンを当てる方法 僕が調べたApacheバージョン判定の小ネタ いずれも大変興味深いものですが、ApacheでできるのであればPHPはどうだろうかと気になる方も多いと思います。これは人間の自然な感情だと思うのです。 このあたり、各診断会社の「秘伝のタレ」みたいなところもあるのでしょうが、私からも少し知見を披露したいと思います。 タイトルにも書いたように、診断文字列を打ち込まずに、言い換えれば、通常のウェブ閲覧の範囲で分かること、さらに言えばHTTPレスポンスヘッダから分かることについて書きます。こういうと、「X-Powered-Byヘッダを見れば一目瞭然www」みたいな反応も考えられますが、そういう自明なものは対象外とします。 (1) キ

    rryu
    rryu 2017/09/08
    バージョンごとにレスポンスヘッダのクセが結構あるのか。
  • 2017年にプロが今更PHPを学ぶための本、Webまとめ - BASEプロダクトチームブログ

    BASE CTOの藤川です。 リブセンスさんが運営されている転職ドラフトという転職サイトで、全員のプロフィールを読んでいて薄々気がついていたことに改めて気がつかされたのですが、BASEの方でサーバサイドに使っているメインの技術はCakePHPというフレームワークでありPHP技術なのですが、 新卒の就職先がRubyを使っていて、今、25〜27歳ぐらいになっている若手エンジニアPHPの経験がない人が増えている! という大きな問題にぶちあたりました。我々は転職いただく方の前職については、いくつか期待している流れがあります。決済、EC視点ではEC-cubeなどでPHPを扱っていた会社からの転職組というのが重要な人材供給源だったりするのですが、それ以外に「モバイル、スマホアプリ、最強のUX」というスタートアップ的な視点においては、モダンなスタートアップのサービスに携わっている経験は魅力的です。(

    2017年にプロが今更PHPを学ぶための本、Webまとめ - BASEプロダクトチームブログ
    rryu
    rryu 2017/04/27
    Railsできる人前提なら公式ドキュメントだけでいいような気も。
  • 【CVE-2016-10033】PHPMailerに重大な脆弱性 - Qiita

    PHPMailer」に重大な脆弱性、直ちにパッチ適用を PHPからのメール送信ライブラリ「PHPMailer」に脆弱性、米SANS ISCが注意喚起 さて、では具体的にどんな内容だろうか。 当然ニュースサイトにはそこまで書かれていない。 CVE-2016-10033について。 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10033 https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html Exploitが公開されている。 https://www.exploit-db.com/exploits/40968/ https://github.com/opsxcq/exploit-CVE-2016

    【CVE-2016-10033】PHPMailerに重大な脆弱性 - Qiita
    rryu
    rryu 2016/12/27
    sendmailコマンドの-fオプションにアレな値が指定される系だが、通常の利用ではアレな値は指定できないっぽい。
  • PHP: settype - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    rryu
    rryu 2016/12/19
    「変数の型をセットする」ってすごい発想な気が。gettype()の対として勢いで作ってしまったのだろうか。
  • PHPの全バージョンの挙動をApacheモジュールとして試す

    この投稿は PHP Advent Calendar 2016 の16日目の記事です。 エグゼクティブサマリ PHPのバージョン間の挙動の違いを調査するツールとして、@hnwによるphpallや、それを改造したphpcgiallがあったが、現実のPHPの利用環境とは違いがあり、検証の妨げになる場合があった。このため、PHPのバージョン毎にApacheを異なるポートで動かすことにより、全てのバージョン(229種)のPHPをApacheモジュールとして動作させることに成功し、modphpallと命名した。modphpallはPHPの検証に有効であることを、キャリッジリターンのみで起こるPHPヘッダインジェクションを用いて確認した。 はじめに 昨日の日記では、PHPの全バージョンをCGIモードで試す phpcgiall について紹介しました。HTTPヘッダインジェクションやセッションの挙動について

    PHPの全バージョンの挙動をApacheモジュールとして試す
    rryu
    rryu 2016/12/17
    httpdを直接実行すれば設定ファイルを別々に指定できるから、あとは力技でいけるのか。
  • SPLの例外の意味をphp-srcから探る - Qiita

    PHPのSPL系組み込み例外は全部で13個あるんですが、正直、使い分けがよく分かりませんでした。公式ヘルプを見ても、わかったような、わからんような。。 (全部うしろにExceptionって付くので省略してます) Logic系 BadFunctionCall BadMethodCall Domain InvalidArgument Length OutOfRange Runtime系 OutOfBounds Overflow Underflow Range UnexpectedValue 名前の似ているOutOfRangeとOutOfBoundsが全然違うって辺りが罠。 どういうときに使われるのかをPHP体のソースコードからgrepしてみます。 そもそも、SPLというオブジェクト指向のライブラリを作る上で導入されたのがSPLの例外だったはずだから、家の使い分けが一番信用に足るはず。。 ソ

    SPLの例外の意味をphp-srcから探る - Qiita
    rryu
    rryu 2016/12/15
    使い分けがよく分らないことで有名なPHPの組み込み例外はPHP本体でもちゃんと使い分けられてないとは。
  • 第七回闇PHP勉強会でrealpathキャッシュとデプロイの話をしました - hnwの日記

    昨日12月11日に第七回闇PHP勉強会を開催いたしました。私を含め発表者6人ということで、とても盛り上がった勉強会になりました。発表者の皆さま、またご参加いただいた皆さま、当にありがとうございました。また会場提供いただいたピクシブ株式会社さまにも大変お世話になりました。 以下が私の発表資料です。 PHPアプリケーションをsymlink切り替えでデプロイしているとrealpathキャッシュ絡みで何かしらトラブルがありますよね、というくくりで複数のトピックを紹介するような内容でした。タイトルの通り、一番話したかったのはmod_phpphp-fpmとでOPcacheの挙動が変わる話だったんですが、かなり入り組んだ内容だったのでうまく伝わらなかったかもしれません。 質問タイムに、@edvakfさんから面白いエピソードを聞くことができました。Pixivではこの手の問題に一通りハマった結果、現在で

    第七回闇PHP勉強会でrealpathキャッシュとデプロイの話をしました - hnwの日記
    rryu
    rryu 2016/12/12
    PHPのrequire_onceは同じファイルを参照する別のシンボリックリンクを同じファイル扱いするのか……
  • PHP: array_count_values - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    rryu
    rryu 2016/11/16
    PHPはたまにピンポイントで便利な関数があるなあ。
  • PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック

    PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック PHPの10年ぶりのメジャーバージョンアップとして昨年12月に登場した「PHP 7」は、PHP 5と比べて2倍以上の実行速度を実現するとリリース前からPHPの生みの親であるRasmus Lerdorf氏自身が説明してきました。 PHP 5からPHP 7へと内部システムのアップデートを行ったTumblrはその成果をブログで発表し、たしかにPHP 7のへ移行したことで実行速度が2倍になったことを裏付けています。 静的解析と自動テストでPHP 7への移行に問題がないかを確認 Tumblrが公開したブログ「Tumblr Engineering — PHP 7 at Tumblr」によると、Tumblrがその内部で稼働しているシステムをPHP 5からPHP 7

    PHP 5からPHP 7への移行で、Tumblrはレイテンシが半分、CPU負荷も半減。テストツールでPHP 7への移行に問題ないかをチェック
    rryu
    rryu 2016/11/16
    移行に時間をかけたのは本当にPHP7に移行していいのか検証したとかなんだろうか。
  • PHP 7.2 の開発版で導入された mb_chr、mb_ord、mb_scrub を試す - Qiita

    概要 PHP 7.2 の開発版 (2016年9月時点で master ブランチ)に mb_chr、mb_ord、mb_scrub が導入されました。これらの関数は私 (masakielastic) が実装を提案し、yohgaki さんが検証と導入をしました。 PHP のソースコードの NEWS ファイルには次のような記載があります。 Mbstring Implemented request #66024 (mb_chr() and mb_ord()) (Masakielastic, Yasuo) Implemented request #65081 (mb_scrub()) (Masakielastic, Yasuo) polyfill-mbstring を利用する mbstring がインストールされていない環境もしくは PHP 7.2 以前のバージョンで mb_chr、mb_ord、m

    PHP 7.2 の開発版で導入された mb_chr、mb_ord、mb_scrub を試す - Qiita
    rryu
    rryu 2016/09/07
    IntlChar::chrはUnicode専用だけどmb_chrはその他の文字コードにも対応しているという違いがあるのか。
  • 却下されたPHP RFCを見てみる その1 - Qiita

    その1 / その2 / その3 Declined RFC 最近のPHPでは、新機能はまずML等にアイデアを出してRFCを作成し、投票において有権者の2/3の賛同を得て初めて導入されるという流れになっています。 その関門を通り抜けたものだけが新機能としてデビューできるわけですが、中には当然却下されたものも存在します。 せっかくだから却下されたRFCを、新しい順に10件見てみます(2016/08/09時点)。 今後通りやすいRFCを提案する際の参考になるかもしれません。 その2に続くかどうかは不明。 New operator for context-dependent escaping 賛成0/反対27で却下。 <?* $str, 'html' ?> <?= htmlspecialchars($str, ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT

    却下されたPHP RFCを見てみる その1 - Qiita
    rryu
    rryu 2016/08/12
    エスケープのやつはショートタグでなくて演算子として定義したのが失敗な気がする。「* <expr>, <expr>」なんて演算子は確かにキモイ。