タグ

ブックマーク / blog.a-way-out.net (4)

  • まだPHPの配列の仕様をよく理解されていない方へ — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something

    PHPを使いもせずDISってる君達へ - Qiita」という記事がありました。 概ね正確な内容ですが、まだ根的にPHPの配列の仕様がわかっていないような記述が一部に見受けられました。端的なものが以下です。 今まで話したようにPHPには配列型と辞書型は曖昧なものです。 およそプログラミング言語の実装において型が曖昧ということはありえません。内部的には型は厳密です。でなければ実装できません。 ただし、自動的に型が変わることがあり、ユーザの理解が曖昧だと、言語の仕様も曖昧に感じるということです。 ということで、PHPの配列についてよく理解していないPHPユーザもまだいるでしょうから、仕様について少し記事を書くことにします。 PHPの配列とは? PHPの配列について知っておくべきことは以下ではないかと思います。 PHPの配列はarray型の1つしかない PHPの配列は順番を保持している 配列の

    rryu
    rryu 2015/12/22
    数字キーと文字列キーを混ぜて使うと死ぬ目にあうというのはJSも同じだが、なんでこんな誰も得しない実装になっているのかが不思議。
  • PHPにおけるHostヘッダインジェクション攻撃が可能な脆弱性 — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something

    Googleで「Hostヘッダインジェクション」を検索しても「HTTPヘッダインジェクション」しか出てこないので、この記事を書くことにしました。 ちなみに、「Hostヘッダインジェクション」自体はPHPに固有というわけではなく、あらゆる環境で起こり得ます。 Hostヘッダインジェクションとは? HTTPリクエストの「Hostヘッダ」の値を攻撃者が操作する攻撃です。 例えば、以下のようなコードがあった場合、$_SERVER['HTTP_HOST']の値を操作できれば、リンク先を自由に変更できます。 <a href="http://<?php echo $_SERVER['HTTP_HOST']; ?>/?token=secret"> 例えば、PHPビルトインWebサーバの場合ですが、telnetしてアクセスしてみましょう。 $ telnet localhost 8000 Trying 127

    rryu
    rryu 2015/11/06
    自分で送るリクエストのHostフィールドに不適当な値を指定しているだけなのでインジェクションではないような。
  • PHPにおけるオブジェクトインジェクション脆弱性について — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something

    SQLインジェクションはかなり有名になりましたが、オブジェクトインジェクションはまだあまり聞かないので、まとめておきます。 Dependency Injection(DI)とは関係ありません。 オブジェクトインジェクション脆弱性とは? SQLインジェクションが外部からSQL文を注入する攻撃であるのと同じように、オブジェクトインジェクションとは外部からオブジェクトを注入する攻撃です。 外部からオブジェクトを注入できれば、そのオブジェクトの機能によりさまざまな攻撃ができる可能性があります。最悪の場合、任意のコードを実行できる脆弱性になります。 PHPの場合、この攻撃が可能なのは、unserialize()関数を悪用できる場合です。 攻撃の方法 unserialize()関数に外部から任意のデータを渡すコードがあった場合、攻撃者は自由にシリアライズされたデータを送信することで、生成されるオブジェ

    rryu
    rryu 2014/07/23
    シリアライズなんてそう使うものではないと思っていたがまだ続きがあったとは。
  • PDOでの数値列の扱いにはワナがいっぱい(2) — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something

    PHP Advent Calendar 2013 in Adventarの18日目です。昨日は、takc923さんの「PHPのissetの罠」でした。 「PDOでの数値列の扱いにはワナがいっぱい」を書いたところ、以下のように結構反響がありました。 PDOでの数値列の扱いにはワナがいっぱい — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something http://t.co/kDJAWzdMqr | 先日思いっきりハマったところ。 — K.K. (@kkmym) December 16, 2013 他の方も書いてるけど、バインドで型を明示すればおk / “PDOでの数値列の扱いにはワナがいっぱい — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or somethin

    rryu
    rryu 2013/12/19
    どのみちキャストするのならDB側にまかせるという判断なのかもしれない。
  • 1