現在の位置: ホーム> 最新記事一覧> PHP 関数のセキュリティを向上するためのガイド: SQL インジェクションおよび XSS 攻撃からの保護

PHP 関数のセキュリティを向上するためのガイド: SQL インジェクションおよび XSS 攻撃からの保護

M66 2025-10-20

PHP機能のセキュリティ向上の方向性

PHP 開発では、関数の安全性を確保することが重要です。この記事では、開発者がより安全で信頼性の高い PHP コードを作成できるようにするための重要な改善点をいくつか紹介します。

型ヒントを使用する

型ヒントは、関数に渡されるパラメーターが正しい型であることを保証し、予期しないデータ型によって引き起こされるエラーを防ぎ、潜在的なセキュリティ リスクを軽減します。

 function add($a, $b): int
{
    return $a + $b;
}

// 引き起こします TypeError 異常な
add('1', 2);

SQLインジェクションの脆弱性を排除する

SQL インジェクションは一般的なセキュリティ問題であり、攻撃者は悪意のある SQL ステートメントをインジェクトすることで機密データを取得する可能性があります。パラメータ化されたクエリを使用すると、SQL インジェクションを効果的に防ぐことができます。

 $statement = $conn->prepare("SELECT * FROM users WHERE username = ?");
$statement->bind_param("s", $username);

クロスサイト スクリプティング (XSS) 攻撃を防止する

XSS 攻撃は通常、悪意のあるスクリプトを Web ページに挿入することによって実行されます。 HTML エンコーディングを使用してユーザー データを安全に出力し、スクリプトの実行を回避します。

 function echoHtml($html)
{
    echo htmlspecialchars($html);
}

ユーザー入力を検証する

ユーザー入力には、悪意のあるコードやその他の攻撃ベクトルが含まれる可能性があります。不正なデータがシステムに侵入するのを防ぐために、使用前に厳密な検証を実行する必要があります。

 if (!preg_match('/^[a-zA-Z0-9]+$/', $input)) {
    throw new InvalidArgumentException();
}

安全なライブラリを使用する

PHP は、PasswordHash、Crypto など、ハッシュ値を安全に生成し、機密データを暗号化および復号化するために使用できるさまざまなセキュリティ ライブラリを提供します。

 $hash = password_hash($password, PASSWORD_DEFAULT);

実践例: 機能セキュリティの強化

ユーザー入力を処理して SQL ステートメントを生成する関数があるとします。

 function generateSql($id)
{
    return "SELECT * FROM users WHERE id = $id";
}

セキュリティを向上させるために、次の改善を行うことができます。

  • 型ヒントを使用して、$id が整数であることを確認します。
  • パラメータ化されたクエリを使用して SQL インジェクションを防止する
function generateSql($id): string
{
    $statement = $conn->prepare("SELECT * FROM users WHERE id = ?");
    $statement->bind_param("i", $id);
    
    return $statement;
}

これらの対策により、PHP 機能のセキュリティが大幅に向上し、アプリケーション攻撃のリスクを軽減できます。