PHPerKaigi2024で登壇したときの資料です。 https://fortee.jp/phperkaigi-2024/proposal/ae2ded4d-8e7e-47a0-85d1-26a8c92308ac
PHPerKaigi 2022 2022/04/10 10:40〜 Track A レギュラートーク(40分) PHP はバージョンを追う毎に型宣言、例外、表明、列挙型などの機能が大幅に強化され、堅牢なコードを書くための機能が充実してきました。それらの機能はどう使うと効果的なのでしょうか。 本講演では PHP 8.1 をベースにして、誤りを想定してチェックするのではなく、そもそも誤りにくい設計とはどのようなものか、つまり「予防」の観点を軸足に、堅牢なコードを導くための様々な設計のヒントをご紹介します。 Agenda - 型宣言 - 列挙型 - ドメインモデリング - 不変性と等価性 - 完全性 - レイヤーと責務
PHPerKaigi 2022 のセッション動画です。 2022/04/10(40分) スピーカー: 和田卓人 ( @t_wada ) タイトル: 予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント PHP はバージョンを追う毎に型宣言、例外、表明、列挙型などの機能が大幅に強化され、堅牢なコードを書くための機能が充実してきました。それらの機能はどう使うと効果的なのでしょうか。 本講演では PHP 8.1 をベースにして、誤りを想定してチェックするのではなく、そもそも誤りにくい設計とはどのようなものか、つまり「予防」の観点を軸足に、堅牢なコードを導くための様々な設計のヒントをご紹介します。 https://fortee.jp/phperkaigi-2022/proposal/ef8cf4ed-63fe-42f8-8145-b3e70054458b
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
こんにちは。NGE16です。 今回から、簡易的な投票システムを作っていきたいと思います。 さっそくですが、進めていきましょう。 MySQLの設定データを管理するために、MySQLの設定を行なっていきます。 まず、データベースの作成を行います。 create database nge16_poll_php;ユーザーを作成します。 grant all on nge16_poll_php. * to dbuser@localhost identified by '******';nge16_poll_phpのデータベースに切り替えます。 use nge16_poll_phpテーブルを作成します。 create table answers ( id int not null auto_increment primary key, answers int not null, created date
要件 PHPでCSVを読み込む方法はネット上でたくさん見つかりますが、文字コードの変換のために一旦別ファイルに保存したり、読み込んだデータにアクセスしにくかったりで、何度書いてもなんとなくスッキリしてませんでした。もっといい方法があるんじゃないかなーって。 で、今回満足のいくCSVローダーが書けたので、ご紹介します。 要件は以下の通り。 CSVデータ中に " や改行が入っている場合にも正しく対応したい。 変数に読み込まれたデータは文字コードUTF-8にすること。 文字コードの変換の際に一時ファイルを作らないで済むようにしたい。 各レコードの列にアクセスするのに、カラム列番号じゃなくてCSV1行目のヘッダ文字列をキーにしたい。 数万行くらいのデータならさくっと読み込んで欲しい。 PHP5.3でも動かしたい。 CSV読み込みPHP関数 ということで、PHPフィルタ(php://filter)
昨日12月11日に第七回闇PHP勉強会を開催いたしました。私を含め発表者6人ということで、とても盛り上がった勉強会になりました。発表者の皆さま、またご参加いただいた皆さま、本当にありがとうございました。また会場提供いただいたピクシブ株式会社さまにも大変お世話になりました。 以下が私の発表資料です。 PHPアプリケーションをsymlink切り替えでデプロイしているとrealpathキャッシュ絡みで何かしらトラブルがありますよね、というくくりで複数のトピックを紹介するような内容でした。タイトルの通り、一番話したかったのはmod_phpとphp-fpmとでOPcacheの挙動が変わる話だったんですが、かなり入り組んだ内容だったのでうまく伝わらなかったかもしれません。 質問タイムに、@edvakfさんから面白いエピソードを聞くことができました。Pixivではこの手の問題に一通りハマった結果、現在で
Monday, September 21, 2015 01:28:00 PM PHP この記事は先日の正規表現を簡単に作るにはの続編になります。 前回、RFC3986のような複雑な正規表現をVerbal Expressionの既存実装でやろうとすると、うまくできないという問題に直面しました。 そこでRubyで実装されていたHEXPRESSをPHPへ移植しようという流れです。 PHP版Hexpressを作った さっそく移植してみました。 hexpress PSR-2の対応が実施中なのですが、Ruby側の機能とテストはすべて移植し、PHP版でいくつか機能追加をしています。 どんな感じか READMEに書いてあるとおりインストールはcomposer経由でできます。 use Hexpress\Hexpress; $pattern = (new Hexpress()) ->start("http")
社長ブログ 社長ブログ 日本のマスコミの罪と日本人の情報力 マスコミによるプロパガンダ。。。 国民への洗脳報道の姿勢。。。 それを、自分自身で調べ Read More » 2016年8月3日 社長ブログ なぜ!? 中国なの??? エンブリッジはアジアへの事業展開を お客さまに呼びかけています。 わたしたちの提案テーマは &nbs Read More » 2016年7月28日 社長ブログ タルムードとユダヤ人との想い出 もう少しタルムードを読み解きます。 多くの天才や優秀な起業家を輩出し続ける ユダヤの人々の諺はとても Read More » 2016年5月8日 社長ブログ タルムード 「 自分の思考に注意すること。 」 この言葉には、 ある本で出会いドキッとしたのを覚えています。 & Read More » 2016年5月4日 社長ブログ ピラミッドとエジプト文明5000年の嘘 つい先
既にいくつかの記事で指摘がありますが、PHPのunserialize関数に外部由来の値を処理させると脆弱性の原因になります。 しかし、ブログ記事等を見ていると、外部由来の値をunserialize関数に処理させているケースが多くあります。 ユースケースの一例としては、「複数の値をクッキーにセットする方法」として用いる場合です。 PHP クッキーに複数の値を一括登録する方法という記事では、以下の方法で複数の値をクッキーにセットしています。 $status = array( "height" => 167, "weight" => 50, "sight" => 1.2 ); setcookie("status", serialize($status)); クッキーの受け取り側は以下のコードです。 print_r(unserialize($_COOKIE['status'])); 出力結果は以下
PHPカンファレンス関西2015での私のセッション「PHPに無いセキュリティ機能」のスライドです。 何が無いのか、知っていれば対応できます。 何が問題になっているのか、知っていれば対応できます。 セキュリティ対策は職人技敵(脆弱性対策をコード中に散りばめ、全体を把握しないと安全にできない作り方)ではなく、CERT/SANS/OWASPが推奨するセキュリティ対策を行い、エンジニアリング的(科学的、体系的な作り方)を行う方が簡単かつより安全、高品質なアプリケーションを作れます。 PDFをダウンロードしたい方はブログをご覧ください。 http://blog.ohgaki.net/missing-security-related-parts-of-php
こんにちは。ウェブ開発担当の木戸です。 突然ですが、PHP で CSV ファイルを連想配列に変換してゴニョゴニョ…ってよくやりますよね? 私も先日開発中に、CSV の関数なんだったかなーと思って「php csv」で検索していたのですが、ファーストビューが定番の fopen して fgetcsv の公式サンプルや記事ばかりでタイトル通り「?」だったので、調査してみたところ、意外と面白いことがわかりました。 やっぱり fgetcsv だけじゃなかった 似たような機能を持つ関数が複数あり、公式ドキュメントを見てもどれを使っていいかわからない、なんてこと PHP ではよくありがちです。CSV 変換もやっぱりいろんな方法がありました。 そこで今回は、あらゆる CSV 変換処理を検証し、処理時間とメモリ使用量を比較します。処理はレコードごとの連想配列に変換するのみで、よくセットでやる文字コードの変換や
弊社本社の麻布十番移転に伴い、本社近くの麻布図書館を利用しています。麻布図書館は土地柄のイメージにあう瀟洒な建物で、蔵書がない場合は港区の他の図書館から取り寄せ(無料です)ができますので、よく利用しています。今回は、山田祥寛さんの「10日でおぼえるPHP入門教室 第4版 」を借りて読んでみました。一読して、本書がセキュリティにもよく配慮されていることがわかりましたので、以下にご紹介したいと思います。 クロスサイトスクリプティング(XSS) 表示の際にHTMLエスケープするという原則を忠実に守っています。そのため、下記の e() という関数を定義して呼び出しています。 function e($str, $charset = 'UTF-8') { return htmlspecialchars($str, ENT_QUOTES, $charset); } その他にもXSS対策として重要な下記の
Here was my setup on an Amazon Medium Instance using APC: php.ini configuration [APC] extension=apc.so apc.enabled=1 apc.shm_segments=1 ;32M per WordPress install apc.shm_size=128M ;Relative to the number of cached files (you may need to watch your stats for a day or two to find out a good number) apc.num_files_hint=7000 ;Relative to the size of WordPress apc.user_entries_hint=4096 ;The number of
もう7月です。 今年も半分が終わってしまいました(^ω^;) たまにはプログラミングっぽい話題を。 PHPで開発をやっていて「これは便利!」と思い、 現在も愛用している方法を紹介してみます。 (改めてググってみてもすぐには見つからなかったので(^ω^;)) PHPで開発を行っている際に echoで複数行を出力したくなる場合があるかと思います。 (複数行を変数へ代入したい場合も含みます。) そういった場合、私はヒアドキュメントを用います。 また、以下のようにヒアドキュメント内で 変数を展開できる機能は非常に有用です。 PHPソース: <?php $tempstr = ‘2行目’; echo <<< EOT 1行目<br /> {$tempstr}<br /> 3行目 EOT; ?> 出力: 1行目 2行目 3行目 ただし、関数は展開されないため、 htmlspecialchars等を利用した
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く