プログラム コードのセキュリティは、アプリケーション開発におけるプログラマーの多面的な資質です。詳しく知りたい方は、以下に私の経験を要約します。
百度で検索します。 open_basedir を設定すると、指定したディレクトリとサブディレクトリ内の php スクリプトのみが実行されます。
php を使用して open_basedir 以外のディレクトリまたはファイルを読み取ると、エラーが報告されます
権限が不十分です
通常、仮想ホストプロバイダーはこれを /tmp および /home
これはユーザーが慣れ親しんでいる問題であり、私たちはこれらの問題を解決する方法を見つける必要があります。ここでは、PHP のセキュリティ問題の概要を示します。
1. セキュリティ上の脆弱性を避けるために、このファイルがローカルに存在するかどうかを確認してください。
例:
コードは次のとおりです | コードをコピー |
$module.'.php';をインクルードします ?> |
ここでは、$module が function/42833.htm target=_blank>グローバル変数であると仮定します。
このスクリプトは、攻撃者にサーバー上で任意の PHP コードを実行する機会を与えます。たとえば、ブラウザの URL の後に ?module=http://example.com/my を追加するだけです。 PHP がこの URL を受信すると、スクリプト内の "$module" 変数の値が http://example.com/my に設定されます。したがって、phpがinclude...を実行するのは非常に危険です
解決策: register_globals を閉じるときに確認するか、php.ini に含めます。
コードは次のとおりです | コードをコピー |
If(file_exists($module.'.php')){ include $module.'.php'; } ?> |
2. サイト全体でスクリプトを実行します。
簡単に言えば、攻撃者はユーザーのブラウザ上で js などのクライアント側スクリプトを実行し、ユーザーの Cookie やその他の重要なデータを盗むことができます。
例:
ボタンをクリックすると、ローカル Cookie 情報が誰かの電子メール アドレスに送信されます (これは、ユーザー情報を盗む Web サイトを作成することがいかに簡単かを示しています)。
3.SQLインジェクション
個人的には、SQL 自体の柔軟性と使いやすさがマイナスの影響を与えていると感じています。
コードは次のとおりです | コードをコピー |
$query "user='$user' および pwd='$pw' のユーザーから login_id を選択します"; Mysql_query($query); ?> |
例えば誰かが書いた場合
http://example.com/login.php?user=admin'%20OR%20(user='&pwd=')%20R%20user='
あなたのphpコードは次のようになる可能性があります。
コードは次のとおりです | コードをコピー |
$query = "user='admin' または (user = '' および pwd='') または user='' のユーザーからログイン ID を選択します"; Mysql_query($query); ?> |
関数を使用して (') (")、() などを除外できます。