タグ

セキュリティとPHPに関するt-murachiのブックマーク (12)

  • 駆け出しエンジニアの皆さんに知ってほしい脆弱性のこと。

    セキュリティは難しいです。 ですが、プログラミング初学者の皆さんは必要以上に萎縮せず、どんどんアプリケーションを作り、公開することにチャレンジして欲しいと私は思っています。 一方、事実として、脆弱なアプリケーションが公開されている(サーバ上でアクセス可能な状態になっている)だけで、全く無関係な第三者が被害を被る可能性があることは知っておく必要があります。 それはWordPressを使った単なるWebサイトであったとしても同じです。 また、あなたのアプリケーションが破壊されて困らないものであったり、 個人情報を保持していないものであったとしても、です。 だから、知らなかった、では済まされないこともあります。 この記事では、PHPのソースを例に、 特にプログラミング初学者が生み出しやすいアプリケーションの脆弱性について、 具体的なコードを挙げながら解説します。 なお、記事のサンプルコードはも

    駆け出しエンジニアの皆さんに知ってほしい脆弱性のこと。
    t-murachi
    t-murachi 2020/09/27
    「危険な変数」という言い方は本質を見失いそうな気がする。「汚染された値」という考え方が古典的ではあるけど、重要なのは何に使うかで、値の出処を気にせずに済む方法が正しい作法として定着すべきと思う。
  • 脆弱性が多いプログラミング言語、第2位はPHP - 第1位は?

    WhiteSource Softwareは3月19日(米国時間)、「Is One Programming Language More Secure Than The Rest?」において、過去の脆弱性情報を集計し、どのプログラミング言語がより多くの脆弱性とかかわりを持っていたのかについて伝えた。 脆弱性情報が多い順にまとめたプログラミング言語ランキングとしては、以下が報告されている。 C言語 (47%) PHP (17%) Java (12%) JavaScript (11%) Python (6%) C++ (6%) Ruby (5%) 資料: WhiteSource Software データソースはNVD (National Vulnerability Database)、各種セキュリティアドバイザリ、GitHub、そのほか人気の高いトラッキングシステムなどで集計された脆弱性情報など。

    脆弱性が多いプログラミング言語、第2位はPHP - 第1位は?
    t-murachi
    t-murachi 2019/03/26
    Cはもう、ちょっと前まで外部入力のバイト列を長さも検査せずに処理しちゃうような関数ばかりが標準ライブラリで幅きかせてた世界だししゃあないとしか…(´・ω・`) ていうかPHP…(´・ω・`)
  • JSON SQL Injection、PHPならJSONなしでもできるよ

    DeNAの奥さんと、はるぷさんがJSON SQL Injectionについて公表されています。 The JSON SQL Injection Vulnerability 不正なJSONデータによるSQL Injectionへの対策について (Json.pm+SQLクエリビルダー) 上記の記事は、主にPerlスクリプトがJSONデータを受け取るシナリオで説明されています。もちろん、この組み合わせに限定したはなしではないわけで、それではPHPではどうだろうと思い調べてみました。 JSON SQL Injectionとは 以下、はるぷさんの「不正なJSONデータによる…」にしたがってJSON SQL Injectionについて説明します。 Perl向けのSQLジェネレータの一つであるSQL::Makerにおいて、以下のスクリプトを想定します。 my ($sql, @bind) = $builde

    t-murachi
    t-murachi 2014/07/10
    これ、SQL を動的生成する必要がないんであれば、where に渡すパラメータは実際の値じゃなくて仮の値にしておいて、生成した SQL (だけ、bind list は無視) を静的に使いまわすようにするのが正解なんじゃ…
  • CGI版PHPにリモートからスクリプト実行を許す脆弱性(CVE-2012-1823)

    CGI環境でPHPを動作させているサイトには、リモートからスクリプト実行を許してしまう脆弱性があります。php.netから提供されている修正リリース(PHP 5.3.12 / PHP 5.4.2)は不完全なため、該当するサイトは至急回避策を導入することを推奨します。 概要 CGIの仕様として、クエリ文字列に等号を含めない場合は、クエリ文字列がCGIスクリプトのコマンドライン引数として指定されます。 例えば、http://example.jp/test.cgi?foo+bar+bazという呼び出しに対しては、test.cgiは以下のコマンドラインで呼び出されます。 test.cgi foo bar baz この仕様を悪用して、CGI版のPHPにコマンドライン引数としてPHPのオプションを指定できます。例えば、http://example.jp/test.php?-s というリクエストは、-s

    CGI版PHPにリモートからスクリプト実行を許す脆弱性(CVE-2012-1823)
    t-murachi
    t-murachi 2012/05/07
    そも PHP を CGI で動かすって言う発想がなかった>ヲレ。
  • PHPのescapeshellcmdを巡る冒険

    以前、ブログ記事「PHPのescapeshellcmdの危険性」にて、escapeshellcmd関数の「余計なお世話」によって危険性が生まれていることを指摘しましたが、その後大垣さんによって修正案が提示され、結局「それはマニュアルの間違い」ということで決着が着いたようです。ところが、この議論とは別のところで、escapeshellcmdはPHP5.4.0で挙動が少し変わっていることが分かりました。 経緯 2011/1/1 徳丸が「PHPのescapeshellcmdの危険性」を書いて、クォート文字がペアになっている場合にエスケープしないという仕様が余計なお世話であり、危険性が生じていることを指摘 2011/1/7 大垣さんがブログエントリ「phpのescapeshellcmdの余計なお世話を無くすパッチ」にて修正案を提示 2011/10/23 廣川さんが、大垣さんのパッチ案を少し修正して

    t-murachi
    t-murachi 2012/04/09
    相変わらずのネタの宝庫っぷりに貫禄すら覚えるな… ('A`)
  • PHPの組み込み関数で例外を発生させる方法

    このエントリではPHPの組み込み関数でエラー時に例外を発生させる方法を紹介します。デフォルト状態では、PHPの組み込み関数の大半はエラー時に例外を発生させません。 前のエントリで、PHPのheader関数は戻り値を返さず、エラー時に例外も発生させないことを紹介しました。これは酷い仕様だと思うのですが、どうすればエラーハンドリングできるかを考えてみました。 header関数の場合、エラー(警告)そのものは出ているので、以下の二つの方法が候補として考えられます。 error_get_last関数で直近のエラーを取得してエラー処理する set_error_handlerで定義したエラーハンドラ関数でエラー処理する どちらもモダンな書き方とはほど遠い感じです。 前者は、BASICのon error resume nextを連想させますし、直近のエラーがどの箇所で起こったかは簡単には識別できないので

    t-murachi
    t-murachi 2012/04/05
    なんか VC6 の _set_new_handler() を彷彿とさせる話だなぁ…。
  • 5分でできるPHPセキュリティ対策 - ぼくはまちちゃん!

    こんにちはこんにちは!! Webプログラミングしてますか! よく「PHPセキュリティがダメ」とか言われてるよね。 でもそれって、べつにPHPが悪いんじゃなくて、 たぶん、セキュリティとかが、まだよくわからない人が多いだけなんじゃないかな。 がんばって勉強しようと思っても、なんだか難しい理屈が並んでいたりするしね…。 なので今日は、セキュリティ対策について、 「これだけやっとけば、わりと安全になるよ」ってことを、初心者むけに、大雑把に書いてみます! 理屈がわからなくても、最初はコピペでも、 なにもやらないより、やったほうがきっとマシになる! 1. XSS対策 動的なものを表示するとき、全部エスケープすればokです! (NG) あなたの名前は <?= $name ?> ですね! ↓ (OK) あなたの名前は <?= htmlspecialchars($name, ENT_QUOTES) ?>

    5分でできるPHPセキュリティ対策 - ぼくはまちちゃん!
    t-murachi
    t-murachi 2012/02/20
    永久に初心者で良い (趣味でネタサイト作るだけ) なら鵜呑みにすればいいと思うよ。 / ブ米で Perl の Taint モードに触れてる人がいるので大昔に書いたものだけど参考まで… >http://bit.ly/A0rWY1
  • 大垣本を読んで「バリデーションはセキュリティ対策」について検討した - ockeghem(徳丸浩)の日記

    このエントリでは、セキュリティの観点から、バリデーション実装について検討します。大垣さんのを読んで「大垣流バリデーション」について勉強した結果を報告します。 はじめに 大垣さんの記事「入力バリデーションはセキュリティ対策」では、「入力バリデーションはセキュリティ対策である」が力説されています。この記事はおそらくid:ajiyoshiさんのブログ記事「妥当性とは仕様の所作 - SQLインジェクション対策とバリデーション」を受けてのことだと思います。id:ajiyoshiさんのエントリでは、「妥当性検証は仕様の問題であってセキュリティ対策ではありません」と明言されています。私はid:ajiyoshiさんに近い考えを持っていますので、大垣さんの主張について、私なりに考えてみました。 記事を書くにあたり、徳丸の立場を明確にしておきたいと思います。 バリデーションの基準は仕様の問題 バリデーション

    大垣本を読んで「バリデーションはセキュリティ対策」について検討した - ockeghem(徳丸浩)の日記
    t-murachi
    t-murachi 2011/12/26
    サンプルコードをテストしない人って割と多い気もするけど、ここまで説得力を削ぐ bug 満載なのは流石に珍しいかも… (^_^;
  • CSRF対策のトークンをワンタイムにしたら意図に反して脆弱になった実装例

    補足 この記事は旧徳丸浩の日記からの転載です(元URL、アーカイブはてなブックマーク1、はてなブックマーク2)。 備忘のため転載いたしますが、この記事は2011年1月27日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり 橋口誠さんから今話題の書籍パーフェクトPHP (PERFECT SERIES 3)を献いただきました。ありがとうございます。このエントリでは同書のCSRF対策の問題点について報告したいと思います*1。 書では、CSRFの対策について以下のように説明されています(同書P338)。 CSRFへの対応方法は、「ワンタイムトークンによるチェックを用いる」「投稿・編集・削除などの操作の際にはパスワード認証をさせる」などがあります。一番確実な方法は両者を併用することですが、ユーザ利便性などの理由から簡略化する場合で

    t-murachi
    t-murachi 2011/01/28
    そもそもシステム時計が本当にマイクロ秒の精度で時刻を刻んでくれているのかどうかも結構怪しいもんだしなぁー。
  • PHPでaddslashes()でエスケープしてもSQLインジェクションな穴

    ■data uri変換機 これはそそります。なるほどぉ。 data:text/html;charset=utf-8;base64,aHR0cDovL2xhLm1hLmxhL21pc2MvanMvZGF0YS5odG1s ■FirefoxでWindowsのクリップボードに値を設定する方法 上を踏まえて。 http://la.ma.la/misc/js/setclipboard_for_firefox.html http://la.ma.la/misc/js/setclipboard.txt Opera8.5でもいけてる気がします。 外部のサーバを利用せずにHTML単体でいけているのは、dataスキームが有効だからですね。IE7ではまだdataスキームって有効じゃないのでしたっけ? え?オーバーフローするかって?しないでしょ(笑) Firefoxでテキストをクリップボードにコピーする方法::最

    PHPでaddslashes()でエスケープしてもSQLインジェクションな穴
    t-murachi
    t-murachi 2010/02/20
    これ、今でもそのままなのかしら…?
  • PHPで誰でも簡単Webサービス製作!でなんか作って公開した奴ちょっと来い - 甘味志向@はてな

    タイトルは出来れば関連する方に読んで欲しかったので、軽く釣り針にしました。すみません。:*) 最近はやりのヒウィッヒヒー(Twitter)でも、よく「○○ったー」みたいなサービスがばんばん登場してますね! おかげでますますツイッターが面白い感じになってて、いい流れですね! でも・・・ちょっと気になることが・・・ 最近「もうプログラマには頼らない!簡単プログラミング!」だとか・・・ 「PHPで誰でも簡単Webサービス作成!」だとか・・・ はてなブックマークのホッテントリで見かけますよね・・・ プログラミングする人が増えるのは素敵です!レッツ・プログラミングなう! なんですけど・・・ ちゃんとセキュリティのこと考えてますか・・・!? 『セキュリティ対策とか難しいし面倒くせーし、俺の適当に作ったサービスとかどうなってもイイしww』 いいんですいいんです! 別にそう思ってるならどうでもいいんです!

    PHPで誰でも簡単Webサービス製作!でなんか作って公開した奴ちょっと来い - 甘味志向@はてな
    t-murachi
    t-murachi 2010/02/20
    …あれ? おいら PHP ってあんまり経験無いからアレなんだけど、 Prepared Statement って PHP ではできないんだっけ? SQL injection は基本的には Prepared Statement を使わないと確実には防げないよ。 / id:entry:01389995 キリがないな(苦笑)
  • 書籍「はじめてのPHPプログラミング基本編5.3対応」にSQLインジェクション脆弱性 - 徳丸浩の日記(2008-10-29)

    id:hasegawayosuke氏にそそのかされるような格好で、「はじめてのPHPプログラミング基編5.3対応」という書籍を購入した。 書は、ウノウ株式会社の下岡秀幸氏、中村悟氏の共著なので、現役バリバリのPHP開発者が執筆しているということ、下記のようにセキュリティのことも少しは記述されているらしいという期待から購入したものだ。 目次から抜粋引用 07-07 Webアプリケーションのセキュリティ [セキュリティ] 08-04 データベースのセキュリティ [SQLインジェクション] 09-13 セキュリティ対策 [セキュリティ] 書をざっと眺めた印象は、「ゆるいなぁ」というものであるが、その「ゆるさ」のゆえんはおいおい報告するとして、その経過で致命的な脆弱性を発見したので報告する。 問題の報告 それは、書P280に登場する「SQLインジェクション対策用の関数(dbescape)」

    t-murachi
    t-murachi 2008/10/29
    ウノウレベルでもこういうことは起こりうるのよね。技術者は卑下することなく明日の我が身と常に心にとどめるべきと思う。
  • 1