タグ

Work - PHPに関するsoulja_boyのブックマーク (149)

  • eval()の危険性の具体例を教えてくれませんか? - OKWAVE

    おそらくPerlなど、CGIで使用する言語のevalと混同されていると思います。 私が知る限りeval()による危険性は1点を除きありません。 が、この危険性も、まともなコード(通常の動作が行えるコード)であれば勝手にセキュリティーホールも埋まる物です。 (それ以外にもいくつか考えられますが、現実的でない、または悪意(悪戯)を持ってeval()を使用しているという可能性の方が高い) たとえば、このページで、 http://okwave.jp/qa4957775.html ブラウザのアドレス欄に下記を入力してエンターキー/リターンキーを押すだけで、 テキストフィールドに入力したコードを、利用者が自由にeval()する事が出来ます。 自分でテキストフィールドに書いたスクリプトを自分で実行するだけなら、わざわざ制作者がeval()を用意する必要はありません。 javascript:(functi

    eval()の危険性の具体例を教えてくれませんか? - OKWAVE
  • Loading...

  • PHPの文字列比較で気をつけるべきこと – 暗黙の型変換 - EC studio 技術ブログ

    PHPではこのコードで true が出力されます。 かなりギョッとしますが、PHPのバグではなく仕様です。。 これはPHPとしてどういう解釈がされているのかを理解しないと とても怖い部分ですので、調査してみました。 ※もし間違っている部分などがありましたらご指摘いただければと思います。 文字列型と数値型の比較 どうやら、PHPでは文字列型と数値型(int,floatなど)など 違う型同士での比較を行う場合、自動で型変換が行われるようです。 整数値を文字列と比較する際、文字列が 数値に変換されます。

  • The Floating-Point Guide - Floating-point cheat sheet for PHP

    Floating-Point Types PHP is dynamically typed and will often convert implicitly between strings and floating-point numbers (which are platform-dependant, but typically IEEE 64 bit values). To force a value to floating-point, cast it: $foo = (float)'10.5'; Decimal Types The BC Math and Decimal extensions implement arbitrary-precision decimal math: $a = '0.1'; $b = '0.2'; echo bcadd($a, $b); // prin

    soulja_boy
    soulja_boy 2013/09/02
    phpの浮動小数点数(float)について。round対応についてnumber_format($number, 2);で処理を推奨しているが、1000以上の値が入る可能性がある場合はsprintf('%.3f', $number)で切り下げてからround($number, 2)実行で四捨五入の方が良い。
  • hnwの日記 - PHPの奇妙なround関数

    (2012/11/01追記) 4年ほど前の記事「PHP5.3.0alpha3のround関数の実装がPHP5.2.6と変わった - hnwの日記」でお伝えした通り、PHP 5.3.0から別の実装が採用されており、ページで指摘しているような挙動のPHPは既に絶滅危惧種です。念のため。 さて、プログラミングの話題もたまには書いてみます。今回はPHPのround関数の挙動が変だ!という話題です。 round()は浮動小数点数を四捨五入する関数で、大抵の言語に同じ名前で実装されているかと思います。ではPHPのround関数の何が問題なのか、ちょっと試してみましょう。 $ uname -sro Linux 2.6.9-42.0.10.plus.c4smp GNU/Linux $ php --version PHP 5.1.6 (cli) (built: Feb 23 2007 06:56:38)

    hnwの日記 - PHPの奇妙なround関数
  • PHPの少数演算における切り上げ切捨て問題 - PSI Labs

    こんにちは、円周率小数点以下50桁までならなんとか覚えている tomita です。 さて、割と有名な話なんですが、以下のPHPコードを実行すると出力はどうなるでしょうか。 <?php $num = (0.1 + 0.7) * 10; echo floor($num); // 小数点以下切捨て処理 答えは実行してもらえばわかりますが、7 になります。来であれば 8 になってほしいところですが、なぜこうなってしまうのでしょうか。 理由はちゃんとPHPマニュアルにも書いてあります。 http://jp2.php.net/manual/ja/language.types.float.php PHPに限った話ではないですが、少数を内部的な二進数表現に変換すると、どうしても有効桁数と丸め方で誤差が出てしまうのです。 ためしに sprintf を使って (0.1 + 0.7) * 10 を 小数点以下

  • セッションハイジャック と session_regenerate_id( )関数

    へんじがない。ただのポンコツのようだ。 ポンコツが今日も持ち場でガンバリつつ、 楽しく生きていくための備忘録ブログ。ぬわーーっっ!!2005年7月から絶賛「更新」中! 【この記事の所要時間 : 約 4 分】 ●PHPのセッション管理の問題とは? PHPのセッション管理は、セッションの固定化(Session Fixation)問題というのがある。この問題に対応するために、ログイン後にセッションIDを作り直して、ログイン後のセッションを保護するという対策が講じられる。 Session Fixationを原因としたセッションハイジャックを防ぐために、セッションIDを置き換える関数というのが、PHPには用意されている。それが、session_regenerate_id( )である。session_regenerate_id( )を使うとセッションIDは新しいものと置き換わるが、セッション情報を維持

    セッションハイジャック と session_regenerate_id( )関数
  • セッションID管理は結局どうすれば良いのか?

    (Last Updated On: 2018年8月18日)脆弱性やセキュリティ対策について技術的な話ばかりしていたので「それで結局PHPのセッション管理どうすれば良いの?」と思われた方も多いと思います。簡単にまとめます。漏れや追記した方が良い事などがあったらご指摘ください。 session_regenerate_id()の使い方(セッションID再生成) ログイン処理時・ログアウト処理には最初にsession_regenerate_idを呼ぶ。 定期的にsession_regenerate_idを呼ぶ。間隔が短いほど低リスク。 session_regenerate_idはtrueオプション(古いセッションデータ削除)を付ける。 session_regenerate_idでtrueオプションは付けない。その代わりに再生成した時点のタイムスタンプを古いセッションデータに記録し、数分後からそのセッ

    セッションID管理は結局どうすれば良いのか?
  • PHP と Web アプリケーションのセキュリティについてのメモ

    このページについての説明・注意など PHP は、Apache モジュールや、CGI、コマンドラインとして使用できるスクリプト言語です。このページでは、主に PHP における、Web アプリケーションのセキュリティ問題についてまとめています。 Web アプリケーションのセキュリティ問題としては、以下の問題についてよく取り挙げられていると思いますが、これらのセキュリティ問題について調べたことや、これら以外でも、PHP に関連しているセキュリティ問題について知っていることについてメモしておきます。 クロスサイトスクリプティング SQL インジェクション パス・トラバーサル(ディレクトリ・トラバーサル) セッションハイジャック コマンドインジェクション また、PHP マニュアル : セキュリティや、PHP Security Guide (PHP Security Consortium) には、PH

  • PHP/脆弱性リスト/メモ - yohgaki's wiki

    なんだかやけに長い説明ばかり検索に引っかかったので書きました。 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のパーサールールを足せば拡張できますがカスタム版をメンテナンスするのも面倒です。必要なルールを足してプルリクエストを送ってもマー

    PHP/脆弱性リスト/メモ - yohgaki's wiki
  • 画像ファイルに PHP コードを埋め込む攻撃は既知の問題

    (Last Updated On: 2015年9月10日)国内外のメディアで「画像ファイルに攻撃用のPHPコードが含まれていた」と比較的大きく取り上げられています。しかし、この攻撃手法は古くから知られていた方法です。条件は多少厳しくなりますがPerl, Ruby, Pythonでも同様の攻撃は考えられます。PHPの場合は言語仕様的に他の言語に比べ攻撃が容易です。 典型的な攻撃のシナリオは次の通りです。 追記:Tokenizerを使った例に修正しました。 アバダなどの画像ファイルをアップロードできるサイトを探す ローカルファイルインクルードバグを探す 画像ファイルにサイトが利用している言語のコードを埋め込む 攻撃コードを含んだファイルを画像ファイルとしてアップロードする ローカルファイルインクルードバグを利用して攻撃コードを実行する PHPの場合、リモートインクルードバグを攻撃するための攻撃

    画像ファイルに PHP コードを埋め込む攻撃は既知の問題
    soulja_boy
    soulja_boy 2013/05/05
    誰でも画像アップロード出来るフォームは、設置箇所のphp実行制限や、バイナリ内のコードチェック、フォーマット変換によるウイルスチェックが必要。
  • 【PHP】オブジェクトと連想配列。相互変換する

    クライアントとAjaxで通信するときにJavaScriptでは連想配列がない(自動でオブジェクトになる)のでObjectをJSONにして送信するけど、サーバー(PHP)側では連想配列として扱いたい場合に変換するメモ。 単純にループすればできるけど、こんな感じで一括でできるみたい。 //POSTされてきたjsonデータを連想配列にする $objData = json_decode($this->json); $aList = (array) $objData; 詳しくはPHPマニュアルの「配列への変換」を参照。privateなメンバ変数があった場合に気を付ける必要があるみたいだけど、JSONの場合は問題ないはず。 JSONとのやり取りについては前の記事も参考に。 jQueryを使ってPHPとJSON形式のデータをやり取りする方法 ちなみにarrayをObjectにも変換できるので、次のように

  • PHPでPINGを使ってマシンの死活監視をする方法 | Web活メモ帳

    PHPでサーバーの死活管理 サーバーが生きてるか死んでるかを確認するのにPingを使う方はいると思いますが、 今回PHPからPingを使う方法を知ったので自分用にメモ。 execを使用する方法、fsocketopenを使用する方法の2パターンありますが、 fsockeopneを使用するとポートの指定も出来るので、MySQLやApacheが稼働しているかのチェックにも使えます。 ソースコードは以下 execでサーバーにpingを送信する方法 /* Ping送信プログラム */ function ping($host) { $r = exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval); //pingの結果を表示 //print_r($r); return $rval === 0; } /* $hostに死

    PHPでPINGを使ってマシンの死活監視をする方法 | Web活メモ帳
  • 池澤あやかのプロフィール - Facebook開発者の為のサポートサイト | fb.developers'+

    スマートウォッチはさまざまなブランドから発売されており、とても注目を集めています。しかし、具体的にどのような機能があるのか分からない方もいるでしょう。また数多くの種類があり、どれを選ぶか迷う方も多いですよね。そこで今回は、スマートウォッチの基的な機能や、おすすめのブランド・商品についてご紹介します。 #健康管理 多くのスマートウォッチには、歩数を計測する機能があります。その機能を使用すれば歩数やカロリーなどが計算できて、健康管理に役立つでしょう。 #通知機能 メールやSNS(Faceboook、Twitter、Instagramなど)の通知を受け取ることができます。会議中や事中などでも気軽に確認できるでしょう。 #電子マネー決済 対応しているスマートウォッチであれば、さまざまな電子マネー決済が使用できます。財布を取り出さなくてもいいため非常に便利です。 #音楽再生 スマホをカバンやポケ

    池澤あやかのプロフィール - Facebook開発者の為のサポートサイト | fb.developers'+
  • モジュール版PHPで「If-Modified-Since」に対応する

    ページ情報 制作日 2004-01-25 最終更新日 2004-08-24 参照用URI http://www.arielworks.net/articles/2004/0125a 分野 PHP CGI版PHPではApacheがうまく計算してHTTPリクエストヘッダの「If-Modified-Since」に対応してくれるらしいが、モジュール版PHPでは自力で実装しない限り常に「200 OK」が返される。はてなアンテナなどのアンテナ類のなかには「If-Modified-Since」を元に更新の判定を行っているものがあるが、PHPで生成しているページでは上記の理由で結局全体をGETすることになってしまう。そこで今回はこれに対応するための関数を作ってみる。 Last-Modifiedヘッダを送信するだけならば、以下の手順は必要ない。『PHPで「Last-Modified」を送信する』を参照のこと

  • Mac OS X LionでPEARをインストールする方法 | Web活メモ帳

    ※注意 作業に当たって、Xcodeが必要かもしれません。 XcodeのインストールはApp Storeからインストールできます。 pearのインストール ターミナルから、以下のコマンド実行します。 $ sudo php /usr/lib/php/install-pear-nozlib.phar ↓下のようなメッセージが表示されてインストールされていきます。 Password: [PEAR] Archive_Tar - installed: 1.3.7 [PEAR] Console_Getopt - installed: 1.3.0 [PEAR] Structures_Graph- installed: 1.0.4 [PEAR] XML_Util - installed: 1.2.1 [PEAR] PEAR - installed: 1.9.2 Wrote PEAR system confi

  • php/mysqlをosxのローカル環境で動かす - gorton-lab 日記の下書き

    前提: mac osx (10.5.6) php5が動くように設定されていて、mysqlがローカル環境にインストールされていることが前提 通常の状態で、test.phpに以下の記述 mysql_connect('localhost', 'user_id', 'password');これだと、下記のようなエラーになる。 Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2) どうやら、mysqlのパスと、phpのパスが合っていないのが原因らしい。 Can't connect to local MySQL server through socket エラーの対処法 http://d.hatena.ne.jp/milk1000cc/20081109/1226220437 Mac OS 10.5で

    php/mysqlをosxのローカル環境で動かす - gorton-lab 日記の下書き
  • Date/Timestamp変換のまとめ - Y's note

    2013/07/17追記 @yutakikuchi_です。 ※記事の内容より詳しいものを書きました。 誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめ - Yuta.Kikuchiの日記 概要 Mysqlからアプリケーションで日付情報を引くときDate型<=>Timestamp型の変換を行う事がしばしばある。 今日はPHP/Python/JavascriptのDate/Timestampの型変換についてまとめる。 Javascriptの例ではSpiderMonkeyを利用している。 Date型の日付を出力する php <?php //現在時刻をDate型で出力 //date関数を使う場合 echo date("Y-m-d H:i:s") . "\n"; //結果 2011-10-14 00:00:00 //strftime

    Date/Timestamp変換のまとめ - Y's note
  • 【TechBuzz】第3回iPhoneGames勉強会 - akiyoko blog

    今週、スマホ開発のセミナーに行ってきました。 「【TechBuzz】第3回iPhoneGames勉強会 「スイカ割り」ができるまで / TitaniumとPHPで作るお手軽ゲーム、「ガチャRPG」ができるまで / 【湯けむりかきわけ 温泉娘】 アプリケーション開発におけるアプリの〝売り″と〝企画″」(2012.8.16) 主に個人(最後の方は企業)でiPhoneアプリを開発されている3組の開発者の方々の、貴重な開発秘話を聞くことができました。 今回はいつになく質問タイムが盛り上がり、一組あたり5〜10くらいずつ質問が寄せられました。私も2つほど質問させていただきましたよ。 スイカ割りができるまで 太田貴博氏(O!TOUCH) 開発アプリ: スイカ割り スイカなどの画像はググった画像を参考に、自力で描き上げた。 開発期間は1週間ほど。 Xcode+Objective-C 特に宣伝はしてない。

    【TechBuzz】第3回iPhoneGames勉強会 - akiyoko blog
  • サービス終了のお知らせ

    平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 件に関するお問い合わせはこちらよりお願いいたします。

    soulja_boy
    soulja_boy 2012/10/04
    [[Work - JSON]