タグ

phpに関するtekimenのブックマーク (103)

  • 安全なWebアプリケーションの作り方2018 - slideshare

    2. アジェンダ • 最近のウェブセキュリティを取り巻く話題 • OWASP Top 10 – 2017を巡る話題 – XXEとSSRF – 安全でないデシリアライゼーション • 割賦販売法改正・施行 • 安全なWebアプリケーションの作り方 改訂 – PDFのFormCalcによるコンテンツハイジャック 2 3. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社(現社名:EGセキュアソリューショ ンズ株式会社)設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当 – その後、企業向けパッケージソフトの企画・開発・事業化を担当 – 1999年から、携帯電話向けインフラ、プラットフォームの企画

    安全なWebアプリケーションの作り方2018 - slideshare
  • BASE で使っているPHPフレームワークにプルリクエストを送ろうとしたら、先を越された話 - BASEプロダクトチームブログ

    この記事は、「BASE Advent Calendar 2018」の5日目の記事です。 devblog.thebase.in Backend Engineer の田中(@tenkoma)です。 「BASE」の裏側で動いているアプリケーションはCakePHP 2を使っています。 そのCakePHP 2にPHP7.3対応のプルリクエストを送ろうとしたけど先を越されてしまった話をします。 CakePHPPHP7.3対応状況 PHPPHP7.0以降、大きな機能追加のあるバージョンが年1回リリース*1されるようになりました。 リリースサイクルは公開されており(PHP: todo:php73)、毎年9月中までにはRC版が公開されているようです。活発なPHP製OSSプロジェクトなら、ビルドスクリプトにPHPの新しいバージョンを追加して、互換性が確認できているか確かめられるようになっているかもしれませ

    BASE で使っているPHPフレームワークにプルリクエストを送ろうとしたら、先を越された話 - BASEプロダクトチームブログ
  • PHP: Quality Assurance

    tekimen
    tekimen 2018/11/21
  • 『PHP Internals Book』を翻訳しました - sprawl

    PHPの内部構造についての資料として有名な『PHP Internals Book』というサイトがあるんですが、これを日語に翻訳したサイトを先日リリースしました。 PHP Internals Book 日語訳 家のPHP Internals Bookは、Julien Pauliさん、Anthony Ferraraさん、Nikita PopovさんというPHPを実際に開発している有名な方々によって共同執筆されたもので、PHPの内部構造について解説したものです。 これほどまとまった資料はあまりなく、PHPの内部構造を勉強する人にとっては非常に役に立つ資料で、他のPHP内部構造について日語で書かれた資料には言及されてないような情報も多く、PHP7.1がリリースされた今でも参考になります。 私自身、PHP内部構造を勉強する上でPHP Internals Bookをよく参照していましたが、もと

    『PHP Internals Book』を翻訳しました - sprawl
  • PHP 7.3の新機能(Kinstaで利用可能)

    2018年12月6日に、PHPの最新版であるPHP 7.3がリリースされました!新しくて便利な機能が登場し、関数の一分が推奨されなくなり、バグ修正が数多く行われ、パフォーマンスが向上します。PHP 7.3はKinstaのすべてのお客様を対象にMyKinstaダッシュボードで利用可能になっております。🤘 最新情報)現在、PHP 8.1(正式リリース)がすべてのプランでサポートされており、PHP 7.3のサポートは終了しています。KinstaがサポートするPHPバージョンは、8.1, 8.2 , 8.3です。 記事では、僕らが個人的に最も重要だと判断した機能と変更点の概要をご説明します。 機能とバグ修正の完全なリストについては、PHP 7.3のアップグレードノートとPHP 7.3のコメント募集をご確認ください。 PHP 7.3の重要な変更点について 記事ではPHP 7.3の次の変更点につ

    PHP 7.3の新機能(Kinstaで利用可能)
    tekimen
    tekimen 2018/11/16
  • 徳丸浩の日記: 解答:間違ったCSRF対策~中級編~

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

    徳丸浩の日記: 解答:間違ったCSRF対策~中級編~
    tekimen
    tekimen 2018/11/15
    PHP マニュアル > 言語リファレンス > 関数 ページ(http://php.net/manual/ja/functions.internal.php )の注意を読むとNULLを返すだろうけど、そうとは限らないみたいなことが書いてありますね(例としてPHP 5.6までのmbstring関数はfalseなど)
  • 徳丸浩の日記: 問題:間違ったCSRF対策~中級編~

    この記事は「問題:間違ったCSRF対策~初級編~」の続編です。前回同様、この記事では問題のみを出し、想定解答は後日公開することにします。ネタバレとなるブックマークコメントやツイートなどは控えていただけると幸いです(「思いのほか簡単だった」など感想は可)。ブログ記事等に解説記事を書くことは歓迎いたします。 この問題が果たして「中級」なのかについては異論があると思います。きわめて易しいと思う人もいれば、きわめて難しいと思う人も多いと思います。中をとって中級としましたが、現実には難し目かと思います。 今回の問題は、前回(初級編)のトークンチェック部分(chgmail.php内)のみを変更したものです。まずは変更箇所を説明します。 前回のおさらい if ($_POST['token'] !== $_SESSION['token']) { // ワンタイムトークン確認 die('正規の画面からご使用

  • CakePHP2系のサポート終了は近い

    おそらくPHP屋さんなら携わってきた人も多いであろうCakePHP。 どうやらこいつの2系もいよいよサポート終了の日が近づいてきているようです。 とりあえず情報をまとめてみましょうか。 CakePHP4のリリース まず、CakePHP4系についての情報が少しずつ出てきているようです。 CakeFestというイベントでもそういう話があったようですし、徐々にRoadmapも更新されてきているようですね。 4.0-Roadmap CakePHP 3.4 and the Path to 4.0.0 どうやら年末もしくは来年頭ごろリリースっぽいです。 んでCakePHP2系最終バージョンと公式に発言している2.10系が登場しました。 2.10.0-RC1 こいつがLTSとなったら、1年バグ対処と1年半セキュリティ対処の後EOLとなるっぽいです。 次はどこへ行く? ってことで2019年の今頃には完全に

  • Accept-Languageの実装例 - Qiita

    ここではリントの言葉で話せ。 はじめに Acecpt-LanguageはHTTPヘッダで「できれば日語か英語で読みたいなー(チラッチラッ」みたいな感じで期待する言語を指定する仕組みのこと。 言語の指定にはIETF言語タグを利用するので、各自調べてほしい。 (これもおもしろい話題だが、今回は対象にしない) 設計 Webサイトをどう多言語化するかは難しい課題だが、とりあえず今回は以下のような戦略をとることにする。 言語が指定されなかった場合または*が指定されたら、 日語のコンテンツを返す コンテンツが存在する言語(中国語zhを除く)が指定されたら、 その言語のコンテンツを返す コンテンツが存在しない言語が指定されたら、 英語のコンテンツを返す 中国語(zh)が指定された場合の追加条件 簡体/繁体のどちらかのコンテンツしかないときは、簡体字または繁体字の存在する方のコンテンツを返す 用字系(

    Accept-Languageの実装例 - Qiita
  • PHPメソッドのprototypeとは何か - hnwの日記

    なんとなくPHPマニュアルを眺めていたところ、リフレクション機能に下記のようなメソッドを見つけました。 ReflectionMethod::getPrototype — メソッドのプロトタイプを (存在すれば) 取得する http://php.net/manual/ja/reflectionmethod.getprototype.php 特定のメソッドについて、「プロトタイプ」の情報を返してくれるもののようです。しかし、この説明だけでは何の値が返ってくるのか想像がつきませんよね。稿ではこのメソッドについて調べてみます。 「プロトタイプ」の意味 そもそもPHPでプロトタイプとは何を意味するのでしょう?PHPの文脈では耳慣れない単語のような気がします。 私も全くわからなかったのでPHPのCソースコードを眺めてみたところ、プロトタイプとは関数の型宣言の意味だとわかりました。Cの「関数プロトタイ

    PHPメソッドのprototypeとは何か - hnwの日記
    tekimen
    tekimen 2018/03/07
  • PHPプログラマのためのXXE入門

    この日記はPHP Advent Calendar 2017の25日目です。前回は@watanabejunyaさんの「PHPでニューラルネットワークを実装してみる」でした。 OWASP Top 10 2017が発表され、ウェブのセキュリティ業界がざわついています。というのも、2013年版までは入っていたCSRFが外され、以下の2つの脅威が選入されたからです。 A4 XML外部実体参照(XXE) A8 安全でないデシリアライゼーション これらのうち、「A8 安全でないデシリアライゼーション」については、過去に「安全でないデシリアライゼーション(Insecure Deserialization)入門」という記事を書いていますので、そちらを参照ください。 稿では、XML外部実体参照(以下、XXEと表記)について説明します。 XXEとは XXEは、XMLデータを外部から受け取り解析する際に生じる脆

  • https://engineering.mercari.com/entry/2017/12/18/deadlock

    https://engineering.mercari.com/entry/2017/12/18/deadlock
  • VimでPHPのコードをシュワルツ変換してソートする - Qiita

    (この記事はピクシブ株式会社 AdventCalendar 2017の12日目の記事です) 今回のあらすじ リファクタリングDSLとしてのVim scriptの威力に再び社内がおののいてる — tad3 (@tadsan) October 25, 2017 どうおののかせたかを紹介します。 問題 pixivのURLルート定義は以下のような形になっています:1 function getUrlRouteMap() { $route_map = [ '/' => [ 'controller' => 'IndexController', ], '/discovery' => [ 'controller' => 'DiscoveryController', ], '/user/:user_id/series' => [ 'controller' => 'UserSeriesIndexControll

    VimでPHPのコードをシュワルツ変換してソートする - Qiita
  • PHPのmysqlndの圧縮プロトコルについてのメモ - hnwの日記

    PHP+PDO+MySQLの環境では、PHP-MySQL間の通信についてzlibを使った圧縮プロトコルを利用することができます。この機能は、DBサーバのCPU利用率に十分余裕があり、かつPHP-MySQL間のネットワーク帯域が逼迫している状況で有用です。 MySQLの圧縮プロトコルとそのマニュアル PHP+MySQLの環境で、圧縮プロトコルは下記のようなコードで利用できます。 <?php $options = [ PDO::MYSQL_ATTR_COMPRESS => true ]; $db = new PDO($dsn, $user, $pass, $options); MySQLドライバとしてmysqlndを利用している場合*1、PHP 5.3.11(2012年4月リリース)以降であれば圧縮プロトコルに対応しています。このことはPHPマニュアルにも下記の通り記載があります。 PDO::

    PHPのmysqlndの圧縮プロトコルについてのメモ - hnwの日記
  • php-timecopをPECLに登録しました - hnwの日記

    かれこれ5年ほどメンテしている拙作のPHP拡張「php-timecop」ですが、このたびPECLに登録しました(PECL :: Package :: timecop)。 PECLというのはPHP体に含まれないPHP拡張を提供する公式のリポジトリです。PECLのアカウントは承認制になっており、誰でも登録できるわけではありません。イタズラやお試しでの登録は減るでしょうが、代わりに登録への精神的ハードルが上がってしまうような仕組みだと言えるでしょう。実際、PECLに登録されているパッケージ総数は365個(2017/7/8時点)と多くはありません。また、日人と思われるPECLアカウントは筆者以外では5人でした。 稿では、PHP拡張をPECLに登録するまでのプロセスや、実際に登録してみてわかったことなどを紹介します。 PECLに登録するメリット さて、そのPECLですが、PEAR*1の衰退とと

    php-timecopをPECLに登録しました - hnwの日記
  • なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い

    twitter上でnot foundの場合は適当なパラメータつけたURLにしてください。 https://www.slideshare.net/sasezaki/php-qa2019-200006092?p PHPカンファレンス2019のスライドです https://fortee.jp/phpcon-2019/proposal/01abf927-eb46-4708-95a1-ae05b9ac2bcf

    なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
  • PHPの連想配列は常にin_arrayより速いのか - hnwの日記

    プログラムを書いていると、入力値が辞書に含まれているかを調べたいようなことがあります。たとえば、ユーザーに都道府県名を入力させて、それが正しい都道府県名であるかどうかを調べたい、というようなことがあるかもしれません。 このような内容をPHPで書く際、キーに都道府県名を持つような連想配列を作る習慣がある人は多いはずです。これは典型的な連想配列の使い方といえるでしょう。 <?php $prefs = array( "北海道" => true, "青森" => true, // ... "沖縄" => true, ); if (isset($prefs[$input])) { // 都道府県名が正しい時の処理 } 一方で、in_array関数を使うやり方も考えられます。 <?php $prefs = array( "北海道", "青森", // ... "沖縄", ); if (in_array

    PHPの連想配列は常にin_arrayより速いのか - hnwの日記
  • PHPでISO8061に準拠した日付フォーマットをバリデーションする - はらへり日記

    この記事は PHPアドベントカレンダー13日目の記事です。大遅刻ですごめんなさい。 qiita.com 正直、なぜか投稿した気になってしまってました…ちゃんとやらなきゃダメですよね気をつけます…。 したいこと すいません。タイトルちょっと厳密に言うと違います。もっというとPHP関係ないかもしれない。 厳密には「ISO8061に従い、かつ年月日秒とタイムゾーンまで指定されているかどうか」バリデーションする方法です。 例えば以下のような書式はISO8061に準拠、かつ上記条件を満たしています。 2016-09-30T12:00:00+09:00 ですが、以下の書式はISO8061に準拠しながらも分秒数は指定されていません。 2016-09-30 とある実装で、分秒数まで指定された状態のバリデーションをかけたい場面があったのでどう実現するか考えました。 ※ 今後、「ISO8061に従い、かつ年月

    tekimen
    tekimen 2016/12/24
    PHPのstrtotimeのみに限っていえば、strtotimeという関数はDSLとしてre2c噛ませているほどなので、「文字列中の時刻にタイムゾーン情報があるかどうか」は指摘通り正規表現で必要な部分を抜き取るしかなさそう…
  • PHP is Dead – 24 Days in December

    I’m going to be honest: I was going to write a blog post about being a polyglot, how my year has been while branching out from PHP, and to encourage the community to stop being toxic about other technologies and communities, but Lorna beat me to it. Instead, I want to flip it on its head a little bit. I gave a keynote at PHPConf.Asia earlier this year that, quite frankly, didn’t go over well (in m

    PHP is Dead – 24 Days in December
  • PHPの全バージョンの挙動をCGIモードで試す

    PHPの挙動を調べていると、マニュアルにも、ChangeLogにも載っていない変更にしばしば遭遇します。たとえば、PCRE系関数(preg_xxxx)の正規表現指定(第1引数)において、過去のPHPではNULLバイトを許容していましたが、最近のPHPでは、正規表現中のNULLバイトをエラーにしています。この変更は、マニュアルには載っておらず、ChangeLogには記載されているもののNULLバイトとは書いていないので、ちょっと気がつきにくいですね。 Fixed bug #55856 (preg_replace should fail on trailing garbage) このような場合、ソースコードの該当箇所を調べるか、適当にあたりをつけたバージョンのPHPをビルドして試すなどの手法がとられているかと思いますが、@hnwさんが phpall を発表されたことで、この種の調査が一挙に楽に

    PHPの全バージョンの挙動をCGIモードで試す
    tekimen
    tekimen 2016/12/17
    "HTTPヘッダの微妙な挙動については、Apacheモジュール版とCGI版では微妙な差があり、検証に注意を要することが課題と言えます。" Dockerで閉じ込めるか、シェルスクリプトでlibphpx.soを切り替えるかかな…