タグ

sqlとPDOに関するlax34のブックマーク (2)

  • PDOはデフォルトではエラー出力をしないです | Unskilled?

    ハマりにハマる PDOでMySQLを扱っていたのですが、あるSQLがいっこうに受け付けてもらえません。 エラーも出ないのでSQL文が間違っているわけでもなさそうなのですが…。 不具合かなと思い、いろいろ調べているとPDOはデフォルトでエラーを吐かないという衝撃の事実を知りました。 なんだってーーーー!!! PHP.iniの設定でdisplay_Errorをyesにしていたので出力されるものだと思っていました。 セキュリティを考えるとエラーを吐かない方がいいのはわかっているつもりでしたが、設定は別なんですね。 PDOでは属性を設定することで、エラーの挙動や出力を変更することが可能です。 ちょっとした説明 PDOの属性設定はPDO::setAttribute()で行います。エラー以外にもさまざまな属性が存在しています。 属性の設定は「どの属性の設定か」の指定に続き、「その属性の設定」を行います

    PDOはデフォルトではエラー出力をしないです | Unskilled?
    lax34
    lax34 2019/12/04
  • ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2010年7月1日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり PHPのデータベース・アクセス・ライブラリPDOは、DB接続時の文字エンコーディング指定ができないため、文字エンコーディングの選択によっては、プレースホルダを使っていてもSQLインジェクション脆弱性が発生します。 追記(2011/06/19) ここに来て急にブクマが追加されはじめていますが、このエントリを書いてから状況が改善しています。PHP5.3.6(2011/03/17)にて、PDOでもデータベース接続の文字エンコーディングを指定できるようになりました。この版で、UNIX版のPHPでは解決しましたが、Win

    ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)
  • 1