タグ

phpに関するtondolのブックマーク (19)

  • PHPの生みの親、ラスマス・ラードフ氏インタビュー | gihyo.jp

    PHPの生みの親⁠⁠、ラスマス⁠⁠・ラードフ氏インタビュー 2015年12月に無事公開されたPHP7。その公開に先立ってPHPの生みの親であるラスマス・ラードフ氏に話を伺う機会がありました。英語で行われた一時間のインタビューは長大ですがラスマス氏の思想がよく分かる話題が多く、可能な限りそのままの形でお伝えすべく、その模様すべてをお届けします。 なお、インタビューは10月に開催されたPHPカンファレンス2015の講演終了後に行われ、リリースに関する話題などはその時点でのものです。 現在の仕事と生い立ち ―――― まずは、PHPを作ってくださってありがとうございます。今日の基調講演もすばらしかったです。 ラスマス:ありがとうございます。 ―――― いきなりですが、個人的な質問から始めてもいいでしょうか。 ラスマス:どうぞ。 ―――― Etsyではどのようなお仕事をなさっているんですか? ラスマ

    PHPの生みの親、ラスマス・ラードフ氏インタビュー | gihyo.jp
    tondol
    tondol 2015/12/16
    よい
  • 徳丸さんのブログに対するコメント

    (Last Updated On: 2018年8月4日)最初、書いた時はユーザーが一人だけと頭にあったので思いっきり誤解していました。確かに複数ユーザーの場合は真正性に問題があります。修正版の差分をアーカイブを更新しておきました。 題のブログはこちらです。 書籍『Webアプリケーションセキュリティ対策入門』のCSRF脆弱性 トークンの有効範囲は? トークンがDBに保存される場合、トークンの有効範囲が気になるところです。大垣および第二版のソースを見ると、トークンを保存するテーブルの定義は以下の通りです。 CREATE TABLE form_id (sha1 TEXT PRIMARY KEY, created TEXT NOT NULL) sha1がトークン、createdが生成日時を保持します。 シンプルな構造ですが、これだとトークンは、ユーザーやセッションを超えて、アプリケーション全体

    徳丸さんのブログに対するコメント
    tondol
    tondol 2015/06/30
    徳丸氏「あるCSRFトークンを別のセッションに使い回せる脆弱性がある」大垣氏「ランダムだからCSRFトークンは推測不可能」/何の反論にもなっていないでしょコレ→訂正記事がアップされた様子
  • PHP-FPMでcgi.fix_pathinfo=0は必要なのか - satakehのブログ

    tr;dr PHP 5.3.9以降なら必要ない。 はじめに NginxPHPを動かす場合、大抵PHP-FPMを使うと思います。その設定方法を説明するほとんどのサイトではphp.iniでcgi.fix_pathinfo=0と指定すべきとしています。 例えばHow To Install Linux, nginx, MySQL, PHP (LEMP) stack on Ubuntu 14.04 | DigitalOceanではデフォルトのcgi.fix_pathinfo=1が超危険と書かれています。 This is an extremely insecure setting because it tells PHP to attempt to execute the closest file it can find if a PHP file does not match exactly. ま

    PHP-FPMでcgi.fix_pathinfo=0は必要なのか - satakehのブログ
  • PHP: The Right Way

    ようこそ 時代遅れの情報がウェブ上にあふれている。そんな情報を見たPHP初心者は戸惑ってしまうだろう。そして、まずい手法やまずいコードが広まってしまう。 そんなのはもうやめよう。PHP: The Right Way は気軽に読めるクイックリファレンスだ。PHPの一般的なコーディング規約、 ウェブ上のよくできたチュートリアルへのリンク、そして現時点でのベストプラクティスだと執筆者が考えていることをまとめた。 大事なのは、 PHPを使うための正式なお作法など存在しない ってこと。 このサイトの狙いは、はじめて PHP を使うことになった開発者に、いろんなトピックを紹介すること。 経験豊富なプロの人にとっても、これまで深く考えることなく使ってきた内容について、新鮮な見方を伝えられるだろう。 このサイトは、決して「どのツールを使えばいいのか」を教えるものじゃない。 いくつかの選択肢を示して、それぞ

  • PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記

    PHPの==は両辺を適当に型キャストしてから比較するような演算子です。この型キャストの規則は難解すぎる上にドキュメントも不十分なため、PHPプログラマでも完璧に理解している人はほとんど居ないくらいの印象です。バグの原因になりかねないため、なるべく==を使わないようにしているPHPプログラマも多いはずです。 ところで、この==演算子の挙動がPHP 5.4.4から変更されていることはあまり知られていません。稿ではこの内容を紹介します。 Bug #54547 の騒動 まずはこの仕様変更の経緯を紹介します。 2年ほど昔、Hacker Newsで2^63付近の整数に対応する文字列をPHPで比較したときの挙動がおかしいというスレッドが盛り上がったことがありました。具体的には、PHPでは「'9223372036854775807' == '9223372036854775808'」がtrueになるとい

    PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記
    tondol
    tondol 2014/08/12
    まだ色々ヤバイ案件が眠っていそうだ
  • PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ

    この投稿はPHP Advent Calendar 2013の12日目の記事です。 PHP恒例行事の参照と三項演算子のdisりですが、そろそろあさってな議論はやめませんかという話です。 今年のPHP-dis大賞といえばこちら。 PHPとかいう糞言語|いんまのブログ ※ 追記: これ書かれたのは2012年でしたすんません。 なんで君たちそんなコードが必要なのかね、と。結論から先言うと、きみたちがPHPが使えないって思うのは、そんな挙動に左右されるようなコードを書くからでしょ、だからCとかRubyとかそういう簡単な言語でわかった気になっている初心者はまったくもう...というわけでPHPの言語文法の基礎んとこ、いきますね。 まず、PHPのarrayは「値」です。もちろん文字列も「値」です。値は値なんだけど、それはミュータブルです。PHPのarrayもしくは文字列の代入は、一見すると、ポインタを使わ

    PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ
  • PHPは代入と参照の違い | 2013-03-07 - bravewood の日記

    http://ameblo.jp/nikko-inma/entry-11122429825.html http://b.hatena.ne.jp/entry/ameblo.jp/nikko-inma/entry-11122429825.html ふむふむ、なになに、PHPはクソ言語で、C++もVBもクソで、 きっちり書きたいときはC きっちり書きたいときはC きっちり書きたいときはCイスから転げ落ちるわ!!! ちょっとこれはPHPerとしては突っ込まざるを得ない。 いつ突っ込むかって? 今でしょ!! とりあえず上記サイトで書かれてるサンプルじゃあ代入と参照が深く理解できないだろうってこともあり、その部分補足してみよう。 まずサンプルプログラム <?php $a = 1; xdebug_debug_zval( 'a' ); $b = $a; //これはただの値の代入(ただしこので時点でbの変

    PHPは代入と参照の違い | 2013-03-07 - bravewood の日記
  • PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜこうなるのか 秘密は PHP 処理系の zend_parse_arg_impl 関数にあります。 zend_parse_arg_impl はphpの関数に渡された引数をパースする部分で、longを要求する関数にstringな値が渡された時の処理はこの部分ですね。 https://github.com/php/php-src/blob/master/Zend/zend_API.c#L335 さて、読み進めていくと「ん!?!?」ってなる行があるはずです。 この行ですね https://github.com/php/php-

    PHP はいつもわたしに新鮮な驚きを与えてくれる - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    tondol
    tondol 2013/12/11
    味わい深い
  • JSON SchemaとPHP

    JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyKazuhito Miura

    JSON SchemaとPHP
    tondol
    tondol 2013/10/29
    サクッと使えそうでイイ
  • PHPとかいろいろ演算代入系の演算子のハナシ - なんたらノート第三期ベータ

    PHPの関数定義はこんな変態的な書き方ができる - 頭ん中 に、続いて。アンリーダブルコードで勉強しようというのがあった、そのとある勉強会の発表ネタです。 これは、PHPMarkdownパーサ の実装を可能な限りそのまま綺麗に変換してJavaScriptに移植しようという js-markdown-extra をやっていたとき、大ハマりして修正に苦労したバグの話から来てます。 演算代入。+= とか *= とかのやつ。関数型の人以外はきっと常用してますね。じゃあ問題。 <?php $tokens = array("a", "b", "c"); $tokens[0] .= array_shift($tokens); print_r($tokens); こうするとどんな結果が出力されるでしょうか。PHPです。 自身の先頭から要素を取り出して、それを先頭要素に文字列追加する。array_shift

    PHPとかいろいろ演算代入系の演算子のハナシ - なんたらノート第三期ベータ
    tondol
    tondol 2013/08/31
    いい話
  • android in-app Billingのサーバ側チェック - 私事ですが……

    2011/08/27:当記事末尾に補足追加。 androidアプリでアプリ内課金をするのにin-app Billingを使おうとしたが、Google先生ご提供のDungeonsのサンプルではアプリ内で署名チェックをしている。 この方法だとクライアント側を改ざんすれば正規に購入しなくても購入したように振る舞えるし、アプリ内に公開鍵を埋め込むのも嫌だと言うことで、サーバ側で署名チェックしつつ、署名チェックの時のみデータをダウンロードするサンプルを書いてみた。productId以外にsignedDataとsignatureを送るようにしている。 実際には払い戻しをした場合や課金はしたけれどダウンロードに失敗した場合などに対応する必要があるが、大まかな構造はこれでよいはず。 中にTODOが書いてあるのでそれらも対応する必要あり。開発中に毎回払い戻しをするのは嫌なので暫定的にJSONと署名に"DEV

    android in-app Billingのサーバ側チェック - 私事ですが……
  • PHPでFC2ブログからデータを取得するときに文字化けする問題 | 備忘録

    FC2ブログのHTMLデータを取得する処理を書いてたら、妙な文字化けを起こすことがあることに気付いた。 しかも再現したりしなかったりで、なんじゃい こりゃあ? file_get_content でやっても、cURL でやっても発生する。 同じページをひたすら取得して先頭40bytesだけ表示するプログラムをループ実行させたら、ちゃんと読めるときと読めないときがある。わけがわからないよ… livedoor blog では問題なくて、fc2ブログだけで発生。 で、結論としては、FC2ブログのサーバ側が gzip 形式でデータを圧縮して送りつけてたのが原因でした。 ・・・え?(;゚Д゚) PHPって、デフォルトでデコードしてくれないの?? ▼対策:cURL の場合curl_setopt( $ch, CURLOPT_ENCODING, "gzip" );してから実行するとちゃんとデコードしてくれま

    PHPでFC2ブログからデータを取得するときに文字化けする問題 | 備忘録
  • PHP と MySQL と サーバサイド プリペアードステートメント - do_aki's log

    少し前のお話なのだけど、せっかくなので書いておくことにする。 MySQLのクエリログを見ていたら、 prepare に相当するログが一切流れていないことに気づいたので、PDO(mysql)でサーバサイドプリペアードステートメントが利用されていないんじゃないか疑惑が浮上。 php のバージョンは 5.2.11 mysql は 5.0 系 以下、検証してみた結果と、その対応です。 検証 簡単なソースコードを実行してみて、そのクエリログを見てみることにした。 PDO を利用 $p = new PDO('mysql:dbname=dbname;host=localhost', 'user', 'password'); $stmt = $p->prepare("SELECT * FROM table_name WHERE id=?"); $stmt->execute(array(1)); $stmt

    PHP と MySQL と サーバサイド プリペアードステートメント - do_aki's log
  • PHPでコンストラクタからメソッドチェーンする方法 - id:anatooのブログ

    PHPでは他の言語のようにコンストラクタからメソッドチェーンできない。例えば"new Hoge->doSomething();"というようなことができない(やってみるとパーサエラーになる)。 オブジェクトを生成して何かひとつメソッドを呼び出して終わり、という例の時に <?php $obj = new Hoge; $obj->doSomething(); とやるのは変数に何か名前をつけるコストやタイプ数などの観点から見てめんどうくさい。 そこで以下のような関数を定義する。 <?php function ref($obj) { return $obj; } この関数はみたとおり渡された値をそのまま返す関数だが、これを使うことで以下のようにメソッドチェーンできるようになる。 <?php ref(new Hoge)->doSomething(); というバッドノウハウっぽい話。

    PHPでコンストラクタからメソッドチェーンする方法 - id:anatooのブログ
  • 徳丸浩の日記 - そろそろSQLエスケープに関して一言いっとくか - SQLのエスケープ再考

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2007年11月26日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり 稿ではSQLインジェクション対策として、SQLのエスケープ処理の方法について検討する。 最近SQLインジェクション攻撃が猛威を振るっていることもあり、SQLインジェクションに対する解説記事が増えてきたようだが、対策方法については十分に書かれていないように感じる。非常に稀なケースの対応が不十分だと言っているのではない。ごく基的なことが十分書かれていないと思うのだ。 SQLインジェクション対策には二通りある。バインド機構を使うものと、SQLのエスケープによるものだ。このうち、SQLのエスケープについて、十分

  • PHPの配列のキーについて調べてみる - hnwの日記

    先日書いた「PHPの奇妙なround関数」は、重箱の隅をつつくような内容の割には注目を頂いたようで何よりです。ブックマーク数が増えていくのを見るのはとても楽しい経験でした。気をよくして他の持ちネタも披露してみます。今回はPHPの配列のキーに関して簡単に紹介した上で、関連してバグなのか仕様なのかわからない挙動を指摘します。 まず、PHPの配列について簡単に紹介します。PHPには配列と連想配列の区別がありません。これは他の言語ではあまり見られない特徴だと思います。PHPのarrayはいわゆる配列と連想配列の両方の性質を持っていますが、他の言語で言うと連想配列で実現されていると言えます。この記事ではPHPの流儀で「配列」と呼びますが、他の言語のユーザーにとっては連想配列と読み替えた方が自然かもしれません。連想配列なのに代入された順番を覚えていたりするので、結局違和感があるかもしれませんが…。 P

    PHPの配列のキーについて調べてみる - hnwの日記
    tondol
    tondol 2009/04/28
    PHPの仕様はやっぱりキモい
  • 60行で作るPHP用テンプレートエンジン

    唐突に、PHP用のテンプレートエンジンを作ってみる。 方針: ふつうのPHPファイルをテンプレートとして使う。 <?php echo $var; ?> は面倒なので #{$var} と書けるようにする。 <?php echo htmlspecialchars($var); ?> はもっと面倒なので %{$var} と書けるようにする。 ついでにXML宣言も <<?php ?>?xml ... に自動置換する。【追記】レイアウト機能を追加してみた コード: <?php /* * SixtyLinesTemplate.php - 60行しかないけどSmartyより速いテンプレートエンジン * * 使い方: * require_once('SixtyLinesTemplate.php'); * $TEMPLATE_DIR = 'templates'; // 省略可、パーミッションに注意 * $c

    60行で作るPHP用テンプレートエンジン
    tondol
    tondol 2008/12/15
    参考になる
  • http://www.cpa-lab.com/tech/032

  • PHPで安全なセッション管理を実現する方法

    _ 残り容量が数十Mバイトになっていた PCがなんかくそ遅いなーと思ってふと空きディスク容量をみたら、残り数十Mバイトまで減っていた。Folder Size for Windowsで各ディレクトリ単位のディスク使用量をながめてみたところ、 Thunderbirdでimapでアクセスしているアカウントのデータフォルダに、なぜか1GバイトオーバーのINBOXファイルがあった。なにこれ? 削除したけど別に動作には支障はなし。 puttyのlogが無限に追記されたよ……。数Gバイト。 昔ダウンロードしたCD/DVD-ROMのisoイメージファイルが、そこかしこに消されず残ってたよ。10Gバイトオーバー。 あと、細かいテンポラリディレクトリの中身とか消したら、30Gバイトくらい空いた。そこまでやって久しぶりにデフラグを起動したら、表示が真っ赤(ほとんど全部断片化されている)だったので、最適化実行中。

    tondol
    tondol 2008/11/15
    ログイン処理はめどい
  • 1