タグ

PHPに関するk3akinoriのブックマーク (43)

  • WordPressを運用中のサーバがまるごとPHPマルウェアに感染していた時の対応メモ - Qiita

    (2021.1.26 追記) 稿の続きを書きました。 時系列で見る:WordPressを運用中のサーバが丸ごとPHPマルウェアに感染する流れ https://qiita.com/Ayutanalects/items/e7919afadc7d8394820f 制作会社から「自社で管理中のサイトがおかしい」との連絡を受けて、 中をのぞいたら、PHP製の複数種類のマルウェアに感染していたので対応をメモ。 以下の内容は、あくまでも自分の対応時のものです。 攻撃者がスクリプトを変更すれば同じ方法では検出できなくなるのでご注意ください。 初期状態 症状 自社管理中のWordPressサイトにアクセスすると、全く知らないサイトにリダイレクトされる 今回は allc〇〇ling.shop というEC風サイト。Kasperskyを使っていると、「警察機関指定の危険サイト」の警告あり https://sup

    WordPressを運用中のサーバがまるごとPHPマルウェアに感染していた時の対応メモ - Qiita
  • PHP の乱数実装がグダグダな話

    2022-07-19 これらの問題を解決する Random Extension 5.x 並びに Random Extension Improvement RFC が可決され、 master に merge されました。 PHP 8.2 より利用可能になります。 https://wiki.php.net/rfc/rng_extension https://wiki.php.net/rfc/random_extension_improvement https://github.com/php/php-src/commit/4d8dd8d258ff365b146bcadcb277ede8992706d0 2022-06-18 これらの問題を解決するため、 PHP 8.2 に対して Random Extension 5.x の RFC が作成され、投票が始まっています 2021-01-15 PHP

    PHP の乱数実装がグダグダな話
  • 【PHP8.0】PHPにヌルセーフ演算子が導入される - Qiita

    $user = null; echo $user->address->country ?? ''; PHPのプロパティは元よりnull安全なので、存在しないプロパティだろうがnullだろうがプリミティブ型だろうがいきなりプロパティを取り出せます。 取れない場合はE_NOTICEが発生しますが、??を使えば黙殺できます。 しかしメソッドはだめです。 echo $user->getAddress()->getCountry() ?? ''; // Fatal error: Call to a member function getAddress() // 1 if (method_exists($user, 'getAddress')) { if (method_exists($user->getAddress(), 'getCountry')) { echo $user->getAddres

    【PHP8.0】PHPにヌルセーフ演算子が導入される - Qiita
  • PHPの最新状況:PHP 8.0開発が進む(第11回) - KUSANAGI Tech Column

    次期メジャーバージョン8.0のリリースに向けた、PHPの開発が順調に進行中とのことです。PHP 8.0の特徴として、JIT(Just-In-Time)コンパイラによる高速化、Union型の導入、static型戻り値指定、弱いマッピング、::classのオブジェクトへの適用などが予定されています。これらの変更点は、PHPプログラミングをさらに便利にしてくれる要素となります。発売予定は2020年末とされており、開発者やエンジニアの関心が集まっています。 2020年も2か月が過ぎ、PHPの開発は次期メジャーバージョンの8.0のリリースに向けた開発が順調に進んでいます。順調に開発が進めば2020年末までにPHP 8.0のリリースが行われることが予想されていますが、現時点でリリースに向けたスケジュールは定義されていません。 PHP 8.0の最大の強化点はJIT(Just-In-Time)コンパイラの

    PHPの最新状況:PHP 8.0開発が進む(第11回) - KUSANAGI Tech Column
  • 『はじめてのPHPプロフェッショナル開発』という本が出版されます - comix

    このたび生まれて初めてを出版することになりました! 『TECHNICAL MASTER はじめてのPHPプロフェッショナル開発 PHP7対応』というタイトル(以下、プロフェッショナル)で2019年2月26日(火)に秀和システムさんから発売されます。 会社の同僚と書いたので、是非買ってください!(石直球) しかし「せっかく買ったのに思ってたんと全然違うやんけ!」となるのも申し訳ないので、プロフェッショナルがどういうなのか簡単に紹介したいと思います。 プロフェッショナルの概要 一言で言うと プログラミングの入門書を読み終えた人が、実際の開発現場で活躍するために必要なアレコレをPHPを題材に解説している です。ボリュームは実質390ページほどになります。中身は導入編、入門編、実践編、発展編の4つのパートで構成されています。 最初の導入編では昨今のPHPとそれを取り巻くエコシステムを紹

    『はじめてのPHPプロフェッショナル開発』という本が出版されます - comix
  • PHPのハマりポイントのリンク集 - Qiita

    PHPのハマり情報のまとめです。主に罠な仕様、予想外の振る舞い、ドキュメントに詳しくは書いてない振る舞いについての情報をまとめていきます。ここに載ってない情報があればぜひとも教えて下さい。頂いた情報をもとに随時更新していきます。 PHPは引数が足りないときはエラーになるが、引数が多いぶんには何も言わない - Qiita PHPはときどき掛け算ができない - Qiita PHPのDateTime::ISO8601はISO8601ではない - Qiita SplFileObjectのREAD_AHEAD, SKIP_EMPTY, DROP_NEW_LINEPHPのバージョンによって挙動がバラバラな件 - Qiita PHP: iterable型はiterator_to_array()に渡しちゃいけない - Qiita PHPの正規表現で^$より\A\zがいい理由 - Qiita PHP:文字

    PHPのハマりポイントのリンク集 - Qiita
  • PHPでデータベースに接続するときのまとめ - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース

    PHPでデータベースに接続するときのまとめ - Qiita
  • PHPを少しでも速く動かしたい - Qiita

    色々調べると先人方が調べてくれています。 とはいえ、情報が散らばってるので個人的にまとめたかったのと 現状どのくらい効果あるのか知りたいので遊んでみる。 どのくらい効果あるのか検証は100回〜1000回計測での平均 PHPは5.6.30 VMで動かしてるからちょっと遅い^^;;; インクリメントとデクリメント \$i++とか\$i--とかを単体で下のように書くことはよくありますが

    PHPを少しでも速く動かしたい - Qiita
  • 今すぐできるPHP高速化 5つのポイント

    今回はPHPで何気なく書いているコードを速度計測し、高速化が図れるようなコードを考察していきます。 普段私達が当たり前のように書いてるコード、意外と無駄が多かったりします。 一番身近なところだと標準出力のecho,print関数。 出力する時はどちらを使っても問題ありません。 でも実は大きな速度差が出てくるんです。 ということで今回は知ったらすぐ実践できる、 コードの高速化を検証を交えながら紹介します! 計測方法//計測回数 define('COUNT',10); //試行回数 define('TEST_COUNT',100000); //小数点桁数 define('DECIMAL_DIGITS',10); //平均値 $average = 0.0; for($i = 0; $i < COUNT; $i++) { $start = microtime(true); for($j = 0;

  • 「PHPの現場」という Podcast をはじめます - Shin x Blog

    学生の頃からラジオを聞いて育ってきたので、技術系のPodcastが好きで色々と聞いています。 日語で PHP 界隈の話題について話すPodcastが無かったので、はじめてみることにしました。 「PHPの現場」というPodcastです。 PHP がメイントピックにはなりますが、PHP の開発現場で出てきそうな話題なら、それ以外の技術や話題についても扱っていくつもりです。 私がお話したいゲストの方をむかえて対談(雑談)形式でざっくばらんに話していきたいので、色々な方にお声がけしていこうと思います。その際は、よろしくお願いしますm(_ _)m Podcast配信環境 Podcastを配信する上で、どうしようかと迷ったのは配信環境です。 SoundCloud などのサービスを利用することも考えたのですが、どうせなら作ってしまおうと思い、自作しました。(実は、過去にPodcastの配信を行ったこと

    「PHPの現場」という Podcast をはじめます - Shin x Blog
  • PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016

    2016/11/03 @ PHPカンファレンス2016 2016/12/15 @ PHPカンファレンス2016再演イベントにて改訂 2017/06/10 @ PHPカンファレンス福岡2017にて改訂 2017/06/10 @ PHPカンファレンス福岡2017講演録画 https://www.…

    PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016
  • PHPにおけるシンボリックリンクを使ったデプロイの危険性について(「realpath_cache」和訳)

    2016/10/31 PHPにおけるシンボリックリンクを使ったデプロイの危険性について(「realpath_cache」和訳) PHP サーバーサイド この文書は@julienPauliさんによる記事「realpath_cache」の日語翻訳です。元々は@gilbiteさんがKLab社内向けに翻訳したものでしたが、日語では見たことがない指摘を含んでおり今でも有用だと考えたため、@julienPauliさんの了解を取った上で@hnwが修正・追記して公開するものです。 はじめに PHP に realpath_cache_get(), realpath_cache_size() という関数があることをご存じでしょうか? また、php.ini に realpath_cache から始まる設定項目があることは? realpath cache は知っておきたい極めて重要な概念です。 特に、コードの

    PHPにおけるシンボリックリンクを使ったデプロイの危険性について(「realpath_cache」和訳)
  • PHPの基礎学習がWeb上でも十分できる良記事・サイトまとめ|TechClips[テッククリップス]

    比較的、プログラミング言語の中でも始めやすいのがPHPです。身近なものでいえば、昔からあるような掲示板などもこのPHPを使って構築されているものも多く、Web開発ではポピュラーな言語です。 近頃では、世界で最も使われているCMS「WordPress」にも用いられているため、WordPressを使っている方は、PHPに触れる機会も多いのではないでしょうか。 ポピュラーな言語だからこそ、これからプログラミングを学びたいという方はPHPから始めるのもいいでしょう。そういった方に向けて記事ではPHPが学べる基礎的な内容が解説された記事をまとめてご紹介。 PHPとは はじめにPHPとは、サーバサイド・スクリプト言語、つまりWebサーバ上で動くプログラムになります。 主にWebサイトの表側で動くようなプログラムではなく、裏側で動くプログラム(例えば、ユーザーが検索した情報に対して該当する結果を返すな

    PHPの基礎学習がWeb上でも十分できる良記事・サイトまとめ|TechClips[テッククリップス]
  • PHPでカレンダーを作成しよう

    作成するカレンダーのイメージ ※以下の内容は[php1st]の「3-4 スケジュール帳(P.192~)」から、カレンダーの作成に関する内容を抜粋して再構成したものです。 カレンダーを作る目的が「最終的には予約システムを作りたい」という方は、WordPressの方が簡単に解決できます(基機能はノンプログラミングで完成できます)。以下の記事にまとめましたので参考にしてください。 WordPressプラグイン「MTS Simple Booking C」による予約システムの作成 これから、次のようなカレンダーを作成します。簡単すぎず難しすぎず、PHPの基礎が習得できたか力試しになり、スケジュール帳や予約への応用など、今後の学習の展望も見えてきます。ざっとPHPの基礎を習得した方は、ぜひ、チャレンジしてみてください。 ポイントは2つあります。1つは行列形式のレイアウトの作成方法、もう1つは、そのレ

    PHPでカレンダーを作成しよう
  • 『例えば、PHPを避ける』以降PHPはどれだけ安全になったか

    2. アジェンダ • 例えば、PHPを避ける • htmlspecialchars 文字エンコーディングチェックの改善 • register_globalsが非推奨に • マジッククォートが非推奨に • 暗号学的に安全な擬似乱数生成器のサポート • セッションID生成の安全性強化 • ヌルバイト攻撃の防御機能の追加 • PDOのDB接続時の文字エンコーディング指定が可能に • header関数のバグ修正 • 安全なパスワード保存が簡単にできるようになった Copyright © 2016 Hiroshi Tokumaru 2 3. 徳丸浩の自己紹介 • 経歴 – 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計

    『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
  • PHP7 bootcamp

    PHPカンファレンス北海道の発表資料です

    PHP7 bootcamp
  • PHPにおける文字列比較の2a問題 - Unknown::Programming

    PHPの文字列比較に関しては古の時代から皆がいばら道を通っているので今更何か語ることも無いんだけどやっぱり良くハマっちゃうということで軽くメモを残しておく。 とりあえずは先人達の苦悩ということでこのあたりの記事は見ておいた方がいいだろう。 素晴らしき自動的な世界〜或いは「型のない」世界〜 - がるの健忘録 PHPでの入力値チェックのすり抜け 上記記事の方が名づけたと思われる(w)いわゆる「2a問題」というものについて書いていく。 この2a問題というのはもう一度再確認すると <?php $a = '2a'; $b = 2; if ( $a == $b ) { // ここを通る } という問題のことだ。 何故こうなるかは元記事やマニュアル等に詳しく書かれているが、カンタンに説明すると「2a」という文字列を数値評価すると「2」として扱われるということだ。 実はコレはPerlでもまったく同じ問題を

    PHPにおける文字列比較の2a問題 - Unknown::Programming
  • 「10日でおぼえるPHP入門教室 第4版」はセキュリティ面で高評価

    弊社社の麻布十番移転に伴い、社近くの麻布図書館を利用しています。麻布図書館は土地柄のイメージにあう瀟洒な建物で、蔵書がない場合は港区の他の図書館から取り寄せ(無料です)ができますので、よく利用しています。今回は、山田祥寛さんの「10日でおぼえるPHP入門教室 第4版 」を借りて読んでみました。一読して、書がセキュリティにもよく配慮されていることがわかりましたので、以下にご紹介したいと思います。 クロスサイトスクリプティング(XSS) 表示の際にHTMLエスケープするという原則を忠実に守っています。そのため、下記の e() という関数を定義して呼び出しています。 function e($str, $charset = 'UTF-8') { return htmlspecialchars($str, ENT_QUOTES, $charset); } その他にもXSS対策として重要な下記の

  • PHPユーザエージェント判別・判定

    Updated 2015.12.07 / Published 2015.04.04 Firefox OSやWindows Phoneの登場でユーザエージェント情報に依存して処理を行っている部分が相次いで見直しを迫られることになりますので、2015年版JavaScriptユーザエージェント判別・判定と同趣旨でPHPにてスマートフォン・タブレットまわりのユーザエージェントを判別・判定して分岐処理を行う手順をご紹介します。 <?php class UserAgent{ private $ua; private $device; public function set(){ $this->ua = mb_strtolower($_SERVER['HTTP_USER_AGENT']); if(strpos($this->ua,'iphone') !== false){ $this->device =

    PHPユーザエージェント判別・判定
  • キャッシュ制御不備の脆弱性にご用心

    古い書籍に掲載されたPHP記述の掲示板ソフトを動かしていると、ログアウト処理がうまく動作していないことに気がつきました。チェックの方法ですが、ログアウト処理の脆弱性検査の簡単なものは、「安全なウェブサイトの作り方」別冊の「ウェブ健康診断仕様」に記載されています。 (J)認証 ログアウト機能はあるか、適切に実装されているか ログアウト機能がない、あるいはログアウト後「戻る」ボタンでセッションを再開できる場合 この仕様書にある通り、『ログアウト後「戻る」ボタンでセッションを再開できる』状態でした。 おそらくセッション破棄がきちんと書かれていないのだろうと思いログアウト部分のソースを見ると、以下の様な処理内容でした(オリジナルからはリライトしています)。 <?php // logout.php require_once('common.php'); // 共通の設定・処理 session_sta