タグ

ブックマーク / blog.ohgaki.net (16)

  • PHP 7.3 – yohgaki's blog

    (Last Updated On: 2018年12月2日) PHP 7.3が今月(2018/12)リリース予定です。新機能や機能変更は小振りですが、結構多くの追加/変更があります。ソースコード中のUPGRADINGに変更点は記載されています。ここでは独断と偏見で選んだ重要度が高い追加/変更を紹介します。 ※ PHP 7.3.0 RC6時点のUPGRADINGから紹介します。 記載していない変更の方が多いです。詳しくはリリース版のUPGRADINGを参照してください。 エラー処理の強化 バンドルされているモジュールのエラー処理はお世辞にも理想的と言える処理ではなかったモノがあります。これらのエラー処理が改善されました。エラーの発生の仕方やエラー発生後の動作が異なることになります。これでは困る事になるかも?と思うかも知れませんが、おかしな動作を起こすデータやコード、はそもそも問題の原因です。問

    PHP 7.3 – yohgaki's blog
    cockok
    cockok 2018/12/03
  • PHPのmt_rand()/rand()問題

    (Last Updated On: 2019年1月29日)PHPのmt_rand()とrand()には状態の初期化/再初期化に問題があります。話しを簡単にするためにrand()をmt_rand()のエイリアスにする提案 https://wiki.php.net/rfc/rng_fixes が適用された状態を前提にMT rand問題として解説します。しかし、基的には古いPHPでrand()を使う場合も同じ(かそれ以上)の問題があります。 そもそもMT randは暗号理論的に安全な乱数生成器ではありません。安全な乱数の取得に使ってはなりませんが、MT rand以前の乱数に比べ予測が困難、ということで不適切な箇所で利用しているケースが散見されます。 結論から言うと、MT randで生成された乱数値は安全ではなく非常に危険1、です。 MT randのシード問題 PHPはMT randを自動的にシ

    PHPのmt_rand()/rand()問題
    cockok
    cockok 2017/02/01
  • PHP7の現状

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

    PHP7の現状
    cockok
    cockok 2015/01/26
  • なぜRubyと違い、PHPの正規表現で^$の利用は致命的な問題ではないのか?

    (Last Updated On: 2018年8月13日)Rubyデフォルトの正規表現では^は行の先頭、$は改行を含む行末にマッチします。PHPPCREとmbregexでは^はデータの先頭、$は改行を含む行末にマッチします。 この仕様の違いはデータのバリデーションに大きく影響します。 参考: PHPer向け、Ruby/Railsの落とし穴 の続きの解説になります。こちらのエントリもどうぞ。 なぜ^と$が行の先頭と行の末尾にマッチするのか? そもそも正規表現はテキスト検索を行うステートマシーンとして設計されました。通常テキストには改行があります。特定の行に一致するかどうかテストするように設計するのが自然です。この為、正規表現の^と$は行の先頭と末尾にマッチするように設計されたと考えられます。 正規表現をバリデーションに利用することは可能です。しかし、そもそもは正規表現に一致する「テキスト」

    なぜRubyと違い、PHPの正規表現で^$の利用は致命的な問題ではないのか?
    cockok
    cockok 2014/04/11
  • OSX+Android(Xperia)+オープンソースでテザリング

    (Last Updated On: 2018年8月14日)Xperiaを購入したのでOSXを無料でテザリングする方法探してやってみました。流石にテザリングソフトを購入した方が簡単ですが、一旦環境を作ってしまえば使うのはそれほど手間ではありません。 Wikiに手順をまとめておいたので興味がある方はどうぞ。 必要な物は、Android SDK, Azilink(Android側のVPNアプリ), OpenBlick(Mac OSX用のVPN GUI – openvpnだけでも何とかなるがこれが無いとネットワーク設定が面倒)です。詳しくはWikiを見てください。 制限事項 ping はできない(UDP pingでエミュレーションしているため) USB接続(Wifi, Bluethooth接続は無理) 自己責任。パケホーダイなら最大約1万3千円のようですが、スマートフォンの最大金額(約6000円)

    OSX+Android(Xperia)+オープンソースでテザリング
    cockok
    cockok 2010/05/04
  • パスワードハッシュはsaltと一緒にハッシュ化する

    (Last Updated On: 2013年11月6日)このタイトルにするとsaltとは、という議論をもう一回する事になるのかもしれませんが、最も近い用語はsaltだと思うので、saltを用語として使います。 随分前からパスワードハッシュはユーザが提供したパスワードと、システムが保持している秘密のランダム文字列と一緒にハッシュ化する方がより安全である、と言っていました。異論がある方もいらしたのですが、どうしてより安全となるのか、場合によっては比べ物にならないくらい安全になるのか、良く分かるビデオを見つけたので紹介します。 (音が大きいので注意!) このビデオを見ると、SQLインジェクションでWebフォーラムのハッシュ化ユーザパスワードを盗み取り、レインボーテーブルを提供しているサイトを利用して「ランダム文字列のパスワード」を解析し、SQLインジェクション情報を提供していたセキュリティ関連

    パスワードハッシュはsaltと一緒にハッシュ化する
  • PHP 5.3の名前空間仕様が変更されました

    (Last Updated On: 2018年8月13日)名前空間に関する議論は5年以上も行われていたのですが、今度こそ結論が出たようです。 何故このようなエントリを書くかというと、Software Design(技術評論社)の11月号にPHPの最新情報としてα版PHP 5.3を紹介しているからです。入稿後に仕様変更があったので最新号の記事ですが既に内容が古くなってしまいました。 # とは言ってもまだ新しい仕様のPHPは無いですが α版なので仕様や機能が大きく変更される事もありますが大きな変更がありました。見誌が刷り上がった頃に名前空間の区切り文字が”::”だと静的にメソッドを呼び出す場合やクラス定数を呼び出す場合に困る場合がある、とPHP開発者のMLで議論になり始めました。 ML上、IRC上、オフラインの打ち合わせが行われ、数週間におよぶ議論の結果が昨日MLに投稿されました。名前空間の

    PHP 5.3の名前空間仕様が変更されました
    cockok
    cockok 2008/10/28
  • Flashの0day脆弱性を利用した攻撃が蔓延

    (Last Updated On: 2008年6月4日)追記:この件、どうも0dayでなく既知の脆弱性の問題だったということで決着しているようです。情報ありがとうございます。ただ、このブログにアクセスしている方でもgoogle analyticsによると脆弱性の無いバージョンだと分かるFlashを利用している方がたったの16.6%です。前のバージョン(9.0.115)の利用者は31.78%です。残りのユーザもほとんどが危険なFlash Playerを利用していると思われます。かなり有効な攻撃であることには変わりないようです。Flash Playerは時々アップデートがある、と教えてくれますがあまり役立たないので自分で脆弱性情報を収集してバージョンチェックする方が良いです。 とりあえず9.0.124.0であれば大丈夫なようです。 http://www.adobe.com/jp/support

    Flashの0day脆弱性を利用した攻撃が蔓延
    cockok
    cockok 2008/06/03
  • PostgreSQL 8.3の全文検索機能(TSearch2)を日本語で利用する

    (Last Updated On: 2018年8月13日)PostgreSQL 8.3.0から、ユーザから提供されている追加機能(contrib)として利用できた全文検索機能(TSearch2)が体に取り込まれました。 体に取り込まれたため、PostgreSQL 8.3.0以降ではソースから構築する場合に ./configure make make install と実行するだけで全文検索機能が利用できるようになりました。 TSearch2は単語単位で全文検索できます。しかし、日語のように単語に区切りがない場合、単語に分解(形態素解析)してからインデックス化する必要があります。 # N-gramは使えません。 残念ながら日語をそのまま扱える機能はPostgreSQL 8.3では実装されていません.しかし、TSearch2(textsearch)を日語で利用するための追加機能がpg

    PostgreSQL 8.3の全文検索機能(TSearch2)を日本語で利用する
  • TomcatのCookie処理の問題

    (Last Updated On: 2008年2月12日)脆弱性は意外と単純な所に残っている場合の方が多いです。 http://nvd.nist.gov/nvd.cfm?cvename=CVE-2007-5333 Apache Tomcat 6.0.0 through 6.0.14, 5.5.0 through 5.5.25, and 4.1.0 through 4.1.36 does not properly handle (1) double quote (“) characters or (2) %5C (encoded backslash) sequences in a cookie value, which might cause sensitive information such as session IDs to be leaked to remote attackers

    TomcatのCookie処理の問題
  • yohgaki's blog - addslashesによるエスケープ処理は止めましょう

    (Last Updated On: 2018年8月13日)追記:PHPエスケープ関連の検索でこのエントリを参照されたと思います。PHPでのエスケープ全般については以下のエントリを参照してください。 PHP文字列のエスケープ セキュリティmemoにaddslashesよるエスケープ処理でSQLインジェクションが可能なるという記事を見つけました。 私のセミナーを聞いたことがある方は「addslashesによるエスケープ処理は止めましょう」と言っていた事を覚えているでしょうか? mysql_real_escape_string()やpg_escape_string()等のデータベース専用のエスケープ関数を使いましょう、とも話しています。 ちなみにSQLiteを使っている場合はaddslashesでエスケープ処理はNGです。もっと根的に間違っています。SQLiteではMS SQL Server,

    yohgaki's blog - addslashesによるエスケープ処理は止めましょう
    cockok
    cockok 2008/02/14
  • ホワイトリストはどう作る?

    (Last Updated On: 2018年8月13日)まずホワイトリストの基中の基は”デフォルトで全て拒否する”であることに注意してください。全て拒否した上で許可するモノを指定しないとホワイトリストになりません。 例えば、CSPはホワイトリストで不正なJavaScriptの実行を防止する仕組みです。2016年のGoolgeの調査によると95%のCSP定義が、実際にはJavaScriptインジェクション脆弱性の防止に役立っていない、との調査結果を発表しています。原因はホワイトリストの作り方の基、全て拒否した上で許可するモノを指定する、を理解していないことにあると考えられます。1 私はいつも基的に能動的なセキュリティ対策2を選択するようにお勧めしています。能動的なセキュリティ対策とは全ての入力値の厳格なバリデーション処理であり、出力時に過剰とも言えるエスケープ処理です。入力/出力の

    ホワイトリストはどう作る?
  • yohgaki\'s blog - iptables:間違ったDoS対策

    エレクトロニック・サービス・イニシアチブのWebシステムのコンサルタントのブログです。Webシステムを対象としたセキュアコーディング/セキュアプログラミング、SAMM、ソースコード検査、Webシステム開発、パフォーマンスチューニングの技術支援、コンサルティング、セミナー開催、書籍などの執筆、PROVE for PHPの開発、PHP4.x/5.xレガシーPHPセキュリティパッチサービスなどを行っています。 ブログのサブタイトルを「書かない日記」としているのは、ブログを始めた時にあまり書かないつもりで始めたのでこのサブタイトルになっています。 氏名:大垣 靖男 私が記述したブログ中のコードは記載が無い場合はMITライセンスです。その他のコードは参考リンクなどのライセンス情報を参照ください。 ご依頼・ご相談は info@es-i.jp まで。

    yohgaki\'s blog - iptables:間違ったDoS対策
  • クライアントサイドでのXSS対策

    (Last Updated On: 2007年8月1日)詳しくはリンク先を見て頂くとして、XSSは クライアントサイドで発生する 通常JavaScriptで発生する と言う点着目してスクリプトにサインを付けクライアント側でもXSSを検出しようと言う話です。フェイルセーフ対策としては有用だと思います。Flash, PDF, Javaなどのオブジェクトにもサインすればより良いと思います。サインさえ付けておけばあとは決まったJavaScriptコードを全てのページに追加するだけなのでそれほど難しい対策ではありません。

    クライアントサイドでのXSS対策
  • PHP 5.2.3リリース

    (Last Updated On: 2018年8月13日)日語環境でMySQLを利用している方には、リリースノートに記載されているmysql_set_charset()の追加に重要な意味がある方も多いと思います。 Added mysql_set_charset() to allow runtime altering of connection encoding. PHP4にはまだ追加されていませんがかなり重要なセキュリティフィックスだと思います。mysql_set_charset()はlibmysqlmysql_set_character_set()の簡単なラッパー関数です。 http://dev.mysql.com/doc/refman/4.1/en/mysql-real-escape-string.html “If you need to change the character

    PHP 5.2.3リリース
  • yohgaki's blog

    なんだかやけに長い説明ばかり検索に引っかかったので書きました。 Linuxのローカル環境でDockerコンテナ内のXアプリ(GUIアプリ)を利用するには $ xhost localhost + を実行した後に $ docker run --rm --net host -e "DISPLAY" container_image_name x_app_binary_path とすれば良いです。 もっと読む SSHなどよく知られたサービスポートで何も対策せずにいると数えきらないくらいの攻撃リクエストが来ます。不必要なログを増やしてリソースを無駄にし、もし不用意なユーザーやシステムがあると攻撃に成功する場合もあります。 SshguardはC作られており、flex/bisonのパーサールールを足せば拡張できますがカスタム版をメンテナンスするのも面倒です。必要なルールを足してプルリクエストを送ってもマー

    yohgaki's blog
  • 1