タグ

PHPとJSONに関するraimon49のブックマーク (16)

  • PHPからJavaScriptにデータを受け渡すときに考えること - Qiita

    PHPのstringは任意のバイト列を扱えますが、JavaScript/JSONはUnicodeで扱える文字しか扱えません PHPのint / floatはプラットフォーム依存ですが、JavaScriptのnumberは整数と小数を型レベルで区別しません JSONのarrayに対応する型はPHPのarrayのうちリストであるものです PHPは配列(リスト)と連想配列を型レベルで区別せず、どちらもarrayです リストはキーが0からの抜けがない連番になっている要素が0個以上の配列です array_is_list()関数で連想配列とリストを判別できます array_values()で連想配列をリストに変換できます array_filter()の結果はフィルタされたキーがスキップされるのでリストではありませんが、結果をarray_values()に通すことでリストにできます JsonSerial

    PHPからJavaScriptにデータを受け渡すときに考えること - Qiita
  • SPAセキュリティ入門~PHP Conference Japan 2021

    こちらのスライドは以下のサイトにて閲覧いただけます。 https://www.docswell.com/s/ockeghem/ZM6VNK-phpconf2021-spa-security シングルページアプリケーション(SPA)において、セッションIDやトークンの格納場所はCookieあるいはlocalStorageのいずれが良いのかなど、セキュリティ上の課題がネット上で議論されていますが、残念ながら間違った前提に基づくものが多いようです。このトークでは、SPAのセキュリティを構成する基礎技術を説明した後、著名なフレームワークな状況とエンジニア技術理解の現状を踏まえ、SPAセキュリティの現実的な方法について説明します。 動画はこちら https://www.youtube.com/watch?v=pc57hw6haXkRead less

    SPAセキュリティ入門~PHP Conference Japan 2021
  • 「クレジットカード情報の非保持化は、脆弱性があれば意味がない」――徳丸浩氏が指摘

    PHPユーザ会は2018年12月15日にPHP Conference 2018を開催した。稿では、EGセキュアソリューションズ 代表取締役 徳丸浩氏の講演「安全なWebアプリケーションの作り方2018」の内容を要約してお伝えする。 徳丸氏は、割賦(かっぷ)販売法の改正や、経済産業省が推奨する「クレジットカード情報の非保持化」を紹介。重大なセキュリティリスクを無視した場合、クレジットカード情報(以下、カード情報)を非保持化するシステムでも、カード情報を盗まれる可能性があると指摘する。 クレジットカード周りのセキュリティ対策の動向 徳丸氏は、カード情報に関連する法律の動向として、割賦販売法改正と経済産業省の実行計画を抜粋して紹介。割賦販売法とは、クレジットカードなどによる信用取引に関する法律だ。2018年6月1日に改正され、クレジットカードを取り扱う事業者に対して、カード情報を漏えいさせ

    「クレジットカード情報の非保持化は、脆弱性があれば意味がない」――徳丸浩氏が指摘
  • null安全を誤解している人達へのメッセージ - Qiita

    先日koherが投稿した記事が多く読まれたようです。記事の内容は僕とkoherが普段話してきた内容が多く登場しているため、僕が人々に伝えたい内容とも強く合致しています。しかし残念な事にインターネットの反応を見ていると、誤解しているケースが思ったより多くありました。 そこで、ネットで見られた意見に対して返答を書きました。 特定の実在する意見は指さずに、僕が感じ取った文脈を編集したものを対象にします。それによって、「そんな事言われてないじゃないか」と思うものがあれば、僕としてもそのほうが嬉しいのでそれで問題ないです。 「たしかにそうだ」と思ってnull安全に今一度興味をもってもらえれば嬉しいです。 なお、記事中のコードは特に言及が無ければswiftです。 意見: null安全があっても、ちゃんとやるのを忘れているかもしれないのでは 忘れません。ちゃんとやらないと、コンパイルが通らないからです。

    null安全を誤解している人達へのメッセージ - Qiita
    raimon49
    raimon49 2016/11/19
    JSONのくだりが現代的で頭に入り易い。丁寧だ。
  • Composerプラグインを作ってみよう /phpcon2016

    PHPカンファレンス2016 トラック1 の発表資料です。

    Composerプラグインを作ってみよう /phpcon2016
    raimon49
    raimon49 2016/11/04
    scriptsの仕組みでタスクランナー的に使ってからpluginに切り出してみると良いよ的な話。
  • PHPのJSON HashDosに関する注意喚起

    4年前にHashDos(Hash Collision Attack)に関する効率的な攻撃方法が28C3にて公開され、PHPを含む主要言語がこの攻撃の影響を受けるため対策を実施しました。しかし、PHP以外の言語が、ハッシュが衝突するデータを予測困難にする対策をとったのに対して、PHPは、GET/POST/COOKIE等の入力データの個数を制限するという対症療法を実施したため、PHPにはHashDosに対する攻撃経路がまだ残っているということは、一部の技術者には知られていました。例えば、以下の様なつぶやきにも見ることができます。 だって、 hashdos 脆弱性の時、 Python とかの言語が、外部入力をハッシュに入れるときに衝突を狙えないように対策したのに、phpだけPOST処理で対策したからね? json を受け取るような口もってるphpアプリのほとんどがhashdos残ってるんじゃない

    raimon49
    raimon49 2015/10/13
    ハッシュデータとして見た$_POSTは対策済みだけど、その中身を取り出して未検証のままjson_decode()に渡す(いわゆるJSONデータをPOSTで受け付けるようなWeb API)はダメという話らしい SimpleXMLの内部実装を読んでるのすごい
  • PHPのJSONライセンス問題が一応決着 - hnwの日記

    2012年頃に、PHPのJSONエクステンションのソースコード中に次のようなライセンス文言が含まれていると話題になりました。 The Software shall be used for Good, not Evil. これはJSONライセンスと呼ばれるライセンスの一文です。「このソフトウェアを良いことに使うのはいいけど、悪いことには使っちゃダメ」といったところでしょうか。 これはフリーソフトウェアの定義に反しており*1、各種LinuxディストリビューションでJSONエクステンションを配布できないことになるため、ちょっとした騒動になったというわけです。 稿ではこのJSONライセンスへの対応が現在どうなっているかを紹介します。 各種Linuxディストリビューションの対応 PHPのJSONエクステンションはjson_encode()やjson_decode()などの重要な関数を提供するエクス

    PHPのJSONライセンス問題が一応決着 - hnwの日記
    raimon49
    raimon49 2015/04/19
    RFC追ってないから全然知らなかった。PHP7では解決。
  • PHP7のタイプヒントベストプラクティス

    (Last Updated On: 2018年9月26日)PHP 7から基的なデータ型(整数型、浮動小数点型、配列型)タイプヒントが追加されます。直感的に書くコードと正しいコードには乖離があります。PHP7でタイプヒントを使う場合のベストプラクティスを紹介します。 タイプヒントとタイプヒントの問題点については前回のブログを参照してください。 PHP7タイプヒントの注意点 PHPはWebシステムで利用され、データベースやJSONなどの外部データとのやり取りが必要になります。PHP7のタイプヒントはデータ型変換を伴うので 入力データの形式/表現範囲 PHPデータ型の表現範囲 タイプヒント/キャストの動作 に注意する必要があります 入力データの形式 データベースの場合、入力データは基的に”文字列”になります。データベースのデータ型をPHPなどの言語のデータ型と完全に一致するとは限りません。こ

    PHP7のタイプヒントベストプラクティス
    raimon49
    raimon49 2015/04/12
    JSON数値との境界はPHPに限らず注意して設計するポイントな気がする。
  • PHP7の現状

    (Last Updated On: 2018年8月13日)PHP7が今年の秋リリースされる予定です。まだまだ多くの変更が行われる予定ですが、現状を簡単にまとめてみたいと思います。代表的な物のみ取り上げています。 ご存知ない方の為に書いておきます。現在リリースされているPHPPHP5です。次のPHPPHP7になり、PHP6はリリースされません。PHP6をUnicodeをネイティブ文字列としてサポートするバージョンとして開発されましたが、文字エンコーディングチェックを内部で自動的に行おうとするなど、無駄が多く遅いため破棄されました。(文字エンコーディングのバリデーションは来アプリでするものです)このため、PHP6はスキップされ次のPHPPHP7になります。 追記:PHP7.0は既にリリースされています。概要はPHP 7.0の概要・新機能・互換性、詳しくはマイグレーションドキュメントをご

    PHP7の現状
    raimon49
    raimon49 2015/01/26
    JSONライブラリが変わるのか。
  • PHPのJSONのエスケープ

    (Last Updated On: 2023年12月8日) 追記:最近のOWASPガイドの更新でJavaScript文字列はUnicodeエンコードで安全性を確保するよう変更されました。元々このブログでもUnicodeエスケープのまま利用するように書いています。他の言語のユーザーはUnicodeエスケープを利用しましょう。PHPもASCII領域の文字をUnicodeエスケープするようにした方が良いと思います。これは提案して実現するように努力します。 JSONはJavaScriptのオブジェクトや配列を表現する方式でRFC 4627で定義されています。メディアタイプはapplication/json、ファイル拡張子はjsonと定義されています。 PHPにJSON形式のデータに変換するjson_encode関数とjson_decode関数をサポートしています。 JSON関数がサポートされている

    PHPのJSONのエスケープ
    raimon49
    raimon49 2013/12/01
    json_encode()に渡すオプション JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT
  • 楽天ウェブサービスAPIを使ってスーパー快適に商品検索を楽しむ - 楽天ウェブサービスブログ

    ごきげんよう。APIチームのかわはら (@ooharabucyou) です。 今日は、楽天ウェブサービスAPIを利用してスーパー快適に楽天で買い物をしましょう。 みなさんは、楽天で買い物を楽しむ際に、まず検索をする場合が多いのではないでしょうか。しかし、時に、検索画面や商品画面があまりにリッチすぎると、ココロを痛めることもあるでしょう。もっと、シンプルに行きたい。そこで、楽天ウェブサービスAPIの出番です。 まずは、利用登録して アプリID を入手してくださいねー。 そして、どこのご家庭にもある curl を、お手元に用意しておいてください。さらに、おもむろにターミナルを開きます。 最も単純な検索は以下の様にできます。「うどん」を探しましょう。 ([YOUR APPID] は適宜アプリIDに置き換えてくださいね) curl “https://app.rakuten.co.jp/servic

    raimon49
    raimon49 2013/04/05
    おもしろー
  • Packagist

    Packagist is the main Composer repository. It aggregates public PHP packages installable with Composer. Define Your Dependencies Put a file named composer.json at the root of your project, containing your project dependencies: { "require": { "vendor/package": "1.3.2", "vendor/package2": "1.*", "vendor/package3": "^2.0.3" } } For more information about packages versions usage, see the composer docu

  • PHP: json_encode - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    raimon49
    raimon49 2012/09/16
    第2引数 ビットマスク
  • 徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012

    OWASP TOP 10 2004を中心にとして、バリデーション偏向の脆弱性対策にツッコミを入れます。 PDFダウンロードは以下から http://www.hash-c.co.jp/archives/owasp-j-201203.html

    徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
    raimon49
    raimon49 2012/09/16
    json_encode()ってPHP5.3からは第2引数があったのか。知らなかった。http://php.net/manual/ja/function.json-encode.php
  • JSONに関しては、例えば、PHPを避ける | 配電盤

    ここで紹介している問題は、PHP 5.4で解決されました。 JavaScriptのための記法であるJSONですが、最近はさまざまなプログラミング言語でサポートされています。たとえば、PHP 5には、JSON文字列をオブジェクトに変換するための関数、json_decode()が用意されています。 <?php var_dump(json_decode('{"id":12345}')); &#91;/php&#93; <p>この実装はなかなか親切で、<a href="http://codepad.org/XT2fs3S5">実行結果</a>を見るとわかるように、データが数値なら、数値として取り出してくれます。</p> <p>しかし、最近ではTwitterのつぶやきのIDがintの範囲を超えたりしているので、ちょっと不安です。下の例では、$idaと$idbの値は異なることが期待されますが、<a h

    JSONに関しては、例えば、PHPを避ける | 配電盤
    raimon49
    raimon49 2010/12/28
    intからfloat
  • CakePHPからJSONをつかうモデルをつくった - UNIX的なアレ

    JSONでシリアライズされているAPIをたたくようなモデルを作ってみました。ローカルに配置しているJSONのファイルにも対応しています。 キャッシュをさせるような仕組みになっているので、多数叩くような場合にも効果的です。 modelの下に、json.phpというファイル名で保存してください。 app/models/json.php <?php class Json extends AppModel { var $name = 'Json'; var $useTable = false ; /* * jsonデータの取得 * @param string JSONファイルへのパス * @param boolean キャシュさせるか * @return mixed */ function find( $path , $cache = false ){ if ( !substr_count( $p

    CakePHPからJSONをつかうモデルをつくった - UNIX的なアレ
    raimon49
    raimon49 2010/08/24
    ローカルファイルにも対応 シンプル
  • 1