現在の位置: ホーム> 最新記事一覧> ftp_rawlistを使用するときに接続が安全であることを確認する方法

ftp_rawlistを使用するときに接続が安全であることを確認する方法

gitbox 2025-05-28

PHPでFTP操作を処理する場合、 FTP_RAWLIST()関数は、UNIXシステムのLS -Lコマンドと同様に、指定されたディレクトリの詳細情報のリストを取得できる非常に実用的なツールです。ただし、FTPプロトコル自体はプレーンテキスト送信されるため、 FTP_RAWLIST()を使用するときに保護されていない場合、資格情報が盗まれたり、中間攻撃を行うなど、深刻なセキュリティリスクに直面したり、この記事では、FTP_RAWLIST()を使用して情報を取得するときに接続セキュリティを効果的に保証する方法を探ります。

1。FTPプロトコルのセキュリティ問題

設立以来、セキュリティは批判された問題の1つです。標準のFTP接続を使用する場合のいくつかの大きなセキュリティリスクは次のとおりです。

  • プレーンテキスト転送アカウントパスワード:攻撃者は、ネットワークスニッフィングを介してログイン資格情報を簡単に傍受できます。

  • データ送信は暗号化されていません:ディレクトリリストとファイルの内容もプレーンテキストで送信されます。

  • 中間攻撃(MITM)に対して脆弱:検証メカニズムがないため、通信コンテンツを改ざんすることができます。

したがって、次のコードを直接使用すると、上記のリスクに直面します。

 $conn = ftp_connect("gitbox.net");
$login = ftp_login($conn, "username", "password");
$list = ftp_rawlist($conn, "/");
print_r($list);

2。FTPSを使用してセキュリティを増やします

従来のFTPのセキュリティ問題を解決するには、 FTP(FTPセキュア)が推奨されます。 FTPSは、SSL/TLS暗号化レイヤーをFTPプロトコルに追加します。これにより、単純なテキスト送信によって引き起こされる情報漏れを効果的に防ぐことができます。

PHPでFTPを使用することは非常に簡単です:

 $conn = ftp_ssl_connect("gitbox.net");
if (!$conn) {
    die("安全な接続を確立できません");
}

$login = ftp_login($conn, "username", "password");
if (!$login) {
    die("ログインに失敗しました");
}

$list = ftp_rawlist($conn, "/");
print_r($list);

ftp_close($conn);

FTP_SSL_Connect()は、暗号化された接続を確立するFTP_Connect()の安全な代替手段です。このようにして、ユーザー名、パスワード、コマンド、およびデータ送信がTLSを介して暗号化され、コミュニケーションセキュリティが効果的に改善されます。

3。パッシブモードとファイアウォール

FTP、特にFTPを使用する場合、接続の障害の問題に遭遇することがよくあります。一般的な理由の1つは、クライアントとサーバーの間にデータチャネルをブロックするファイアウォールがあることです。この問題は、パッシブモードを有効にすることで解決できます。

 ftp_pasv($conn, true);

パッシブモードが有効になっている場合、データ接続はクライアントによって開始され、ほとんどのファイアウォールの問題を回避できます。

4。証明書の検証の重要性

FTP_SSL_Connect()を使用する場合、PHPはデフォルトでサーバー証明書を検証しません。データは暗号化されていますが、攻撃者はサーバーを鍛造できます。可能であれば、下部の証明書を手動で検証するか、プロキシを介して問題を解決することをお勧めします。 PHPのFTP拡張は証明書の確認をネイティブにサポートしていませんが、より粒状制御のためにCurl(TLS/SSLを超えてFTPを使用)などのより高度なライブラリを使用することを検討してください。

5。概要

FTP_RAWLIST()を使用してリモートファイルディレクトリ情報を取得する場合、FTPプロトコルのセキュリティリスクを無視しないでください。推奨されるセキュリティプラクティスには次のものがあります。

  • ftp_connect ();の代わりにftp_ssl_connect()を使用します。

  • 常にパッシブモードをオンにして、ファイアウォールの制限をバイパスしてください。

  • サーバー証明書を可能な限り確認します。

  • 生産環境で暗号化されていないFTP操作を使用しないでください。

上記の測定により、FTP操作によってもたらされるセキュリティリスクを大幅に削減でき、データ送信の完全性と機密性を保護できます。