PHPマルチプロセス実行フローの制御とデータ分離
PHPのpcntl_fork関数を使用すると、プロセスが分岐して親プロセスと子プロセスが並行して実行される。分岐点では両プロセスが同じコードを持ちながら、異なる実行パスを選択できる。
基本的な分岐動作
pcntl_forkの戻り値で役割を判定する:
-1:プロセス生成失敗
0より大きい値:親プロセス(子プロセスのPID)
0:子プロセス
以下のコードでは、if-elseの両方が実 ...
10月4日 17:15 投稿
PHPの型変換と比較処理におけるCTF脆弱性パターン
1. intval()関数の型変換挙動
PHPのintval()は文字列を整数に変換する際、特定のパターンで停止位置が異なる特性を持つ。特にbaseパラメータが0の場合、接頭辞に応じて自動で進数を判定する。
<?php
// 8進数・16進数による回避
var_dump(intval("012")); // 10 (8進数として解釈)
var_dump(intval("0xA")); // 10 (16進数として解釈)
// 小数点以下の切り捨て
v ...
10月3日 17:07 投稿
ソースコードからLNMP環境を構築する方法
必要なソフトウェアパッケージとダウンロードリンク
Nginx - ウェブサーバーコンポーネント
MySQL - データベースコンポーネント
PHP - サーバーサイドスクリプト言語
PCRE - Nginxの正規表現サポート用ライブラリ
Boost - MySQL 5.7以降に必要なライブラリ
本記事では以下のバージョンを使用します:
Boost 1.59.0
MySQL 5.7.19
Nginx 1.14.1
PCRE 8.41
PHP 7.1.24
...
10月2日 09:00 投稿
CTFウェブチャレンジ解析:ファイルインクルードとコマンド実行の脆弱性
本記事では、特定のCTFウェブチャレンジ「easy_web」を題材に、ファイルインクルードとコマンド実行の脆弱性を悪用した攻略手法を解説します。課題のURLは、http://xxx/index.php?img=...&cmd= のような形式でした。
イメージパラメータ (img) の解析
まず、img パラメータに注目します。このパラメータはエンコードされた文字列を含んでおり、デコードするとファイル ...
9月25日 20:17 投稿
TinyMCEにResponsive Filemanager 9を統合する実践ガイド
概要
Responsive Filemanager 9 は TinyMCE 向けの高機能ファイル管理プラグインで、ドラッグ&ドロップ対応の UI と複数画像一括挿入機能を提供します。本記事ではインストール手順からセキュアな運用設定まで網羅的に解説します。
提供機能
画像・PDF・動画など複数ファイルのアップロード/ダウンロード
リアルタイムサムネイル生成(JPEG/PNG/WebP 対応)
ファイル ...
9月23日 00:13 投稿
正規表現の基本パターンと活用テクニック
正規表現は、テキスト処理や入力検証など、様々な場面で非常に強力なツールとして機能します。特定の文字列パターンを効率的に識別し、操作するために利用されます。ここでは、よく使われる正規表現のパターンと、それらを効率的に記述するためのヒントを紹介します。
一般的な正規表現パターン
以下に、ウェブアプリケーションなどで頻繁に利用される正規表現のパタ ...
9月18日 14:04 投稿
Lumenフレームワークにおける依存性注入のカスタマイズ実装
トークン認証システムの実装と切り替え
トークン認証システムをMySQLからRedisに将来的に移行する場合、シームレスな切り替えを実現する方法を説明します。
インターフェースの定義
まずトークン操作のインターフェースを定義します:app/Contracts/TokenService.php
<?php
namespace App\Contracts;
interface TokenService
{
/**
* ユーザーIDに基づい ...
9月16日 07:30 投稿
PHPで実装するキューとスタック:配列と連結リストによるデータ構造の基礎
キュー(Queue)の基本概念
キューは先入先出(FIFO: First In, First Out)の原則に従う線形データ構造です。データの追加(エンキュー)は末尾でのみ行われ、データの削除(デキュー)は先頭でのみ行われます。PHPの組み込み関数を使用する場合、array_push() または配列の代入で末尾に要素を追加し、array_shift() で先頭の要素を削除することでキューの動作を再現でき ...
9月14日 11:19 投稿
Lumenにおけるサービスプロバイダーの登録と起動プロセスの解析
Lumenアプリケーションの初期化プロセスにおいて、サービスプロバイダーの登録(register)と起動(boot)は、依存関係の解決とコンポーネントのセットアップを担う非常に重要なステップです。
サービスプロバイダーの登録
通常、サービスプロバイダーは bootstrap/app.php 内で $app->register() メソッドを通じて登録されます。以下は、複数のプロバイダーを ...
9月10日 18:38 投稿
PHPのGuzzleにおける非同期リクエストと認証の実装手法
PHPプロジェクトで外部APIと通信する際、Guzzleは強力かつ柔軟なHTTPクライアントとして広く利用されています。まずは、Composerを使用してライブラリをプロジェクトに導入します。
composer require guzzlehttp/guzzle
非同期リクエストによる並列処理
PHPの標準的な同期処理では、複数のHTTPリクエストを順次実行するため、全体の待機時間が長くなりがちです。Guzzle ...
9月9日 17:11 投稿