PHP は開発者に大きな柔軟性を与えますが、セキュリティ問題に潜在的な潜在的な危険ももたらします。近い将来、私たちは過去を要約する必要があります。この問題について、記事を翻訳し、私自身の開発の感想も加えて、ここにまとめてみたいと思います。
インターネット サービスを開発するときは、セキュリティの概念を常に念頭に置き、開発するコードにそれを反映する必要があります。 PHP スクリプト言語は、特に経験の浅い開発者のほとんどにとって、セキュリティの問題を心配しません。金銭が関係する取引について話すときは、フォーラムやショッピング カートの開発など、セキュリティに関する考慮事項に特別な注意を払う必要があります。
フォームを信頼しないでください
一般的なJavaScriptフロントエンド検証では、ブラウザのJavaScriptエンジンをオフにするなどユーザーの行動を知ることができないため、悪意のあるデータがPOSTされますサーバーに。検証はサーバー側で行う必要があり、XSS 攻撃や SQL インジェクションを防ぐために、各 PHP スクリプトに渡されるデータを検証します
ユーザーを信頼しないでください
Web サイトが受信するすべてのデータには次のものが含まれていると想定する必要があります。悪意のあるコード。隠れた脅威、すべてのデータを駆除する必要があります
グローバル変数を閉じる
php.ini ファイルで次の設定を行います:
register_globals = Off
この設定オプションがオンになっている場合、優れたセキュリティ 隠れた危険。たとえば、受け取ったデータをデータベースに挿入する process.php スクリプト ファイルがあります。ユーザー入力データを受け取るフォームは次のようになります。
<input name="username" type="text" size="15" maxlength="64">
このように、データが送信されるとprocess.php では、PHP は $username 変数を登録し、この変数データを process.php に送信し、そのような変数を POST または GET リクエスト パラメーターに設定します。初期化が表示されない場合、以下の問題が発生します(参考:http://www.lai18.com/content/434606.html)
<?php // Define $authorized = true only if user is authenticated if (authenticated_user()) { $authorized = true; } ?>
ここでは、authenticated_user関数が、 $authorized 変数の値。 register_globals 構成がオンになっている場合、どのユーザーも $authorized 変数の値を任意の値に設定するリクエストを送信して、この検証をバイパスできます。
これらの送信データはすべて、$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST などを含む、PHP の事前定義された組み込みグローバル配列を通じて取得する必要があります。$_REQUEST は $_GET/$_POST/$_COOKIE です。 3 つの配列のジョイント変数のデフォルトの順序は、$_COOKIE、$_POST、$_GET です。
推奨されるセキュリティ構成オプション
error_reporting をオフに設定します: エラー情報をユーザーに公開しません
セーフモードをオフに設定します
register_globals をオフに設定します
次の機能を無効にします。 、exec、passthru、shell_exec、proc_open、popen
open_basedir は /tmp に設定され、これによりセッション情報にストレージ権限が与えられ、別の Web サイトのルート ディレクトリが設定されます
expose_php は Off に設定されます
allow_url_fopen は Off に設定されます
allow_url_include が Off に設定されています
データベースを操作する SQL ステートメントについては、ユーザーが元の SQL ステートメントの機能を変更する特定のステートメントを入力する可能性があるため、セキュリティに特別な注意を払う必要があります。次のような例:
「PHP セキュリティ プログラミング シリーズ」シリーズの技術記事を整理して収集しています
PHP セキュリティ プログラミング シリーズのお気に入りは、PHP セキュリティ プログラミングに関する知識を収集し、PHP セキュリティ プログラミングの学習リファレンスを提供します
1discuz の PHP は SQL インジェクション関数を防ぎます
2 PHP での xss 攻撃を防ぐ方法
3 PHP 安全なプログラミング: 出力をエスケープする
4 PHP 安全なプログラミング: ユーザー入力をフィルターする
5 PHP 安全なプログラミング: ユーザビリティとデータ追跡
6PHP セキュア プログラミング: 関係のない人にエラー メッセージを見させないでください
7PHP セキュア プログラミング: register_globals のセキュリティ
8PHP セキュア プログラミング: Web サイトのセキュリティ設計のいくつかの原則
9 防御
13PHP セキュア プログラミング: フォームとデータ セキュリティ
14PHP セキュア プログラミング: URL のセマンティクスからの攻撃
15PHP セキュア プログラミング: ファイル アップロード攻撃の防御
1 6PHP セキュア プログラミング: クロスサイト スクリプティング攻撃の防御
17PHP セキュア プログラミング: 正規セッションのセッション固定取得
18PHP セキュア プログラミング: SQL インジェクションの防止
19PHP セキュア プログラミング: Cookie の漏洩セッションハイジャックにつながる
20PHPセキュアプログラミング: ソースコードの公開を防ぐ
21PHPセキュアプログラミング: バックドアURLに注意
22PHPセキュアプログラミング: セッションハイジャックに対する防御
23 PHP セキュア プログラミング: ブルート フォース クラッキング攻撃
24PHP セキュア プログラミング: パスワード スニッフィングとリプレイ攻撃
25PHP セキュア プログラミング: ログイン ステータスを記憶するための安全な方法
26PHP セキュア プログラミング: シェル コマンド注射
27PHP セキュア プログラミング: リモート ファイルを開くリスク
28 PHP セキュア プログラミング: ファイル ディレクトリの推測の脆弱性
29 PHP セキュア プログラミング: ファイル名が操作されるのを防ぐ
30 ペソセキュア プログラミング: ファイルに含まれるコード インジェクション攻撃
31PHP セキュア プログラミング: セッション データ セキュリティの向上
32PHP セキュア プログラミング: 共有ホスティングのソース コード セキュリティ
33PHP セキュア プログラミング: セッション データ インジェクション
34PHP 安全なプログラミング: ホスト ファイル ディレクトリの参照
35PHP 安全なプログラミング: PHP セーフ モード
36php 安全性は、$_GET 文字をエスケープせずに $ を使用して直接値を取得します
37php 脆弱性を防ぐ戦略を立てて高パフォーマンスの Web を作成します
38 XSS 攻撃とは何ですか? PHP XSS攻撃防止機能
39 フォームの繰り返し送信を防ぐPHPメソッドの解析
40php security Dog Tail 継続 mink
41PHP はクロスドメインフォームの送信を防止します
42php は SQL インジェクションの詳細な説明と防止を防止します
43php は SQL インジェクションのコード例を防止します
44php は SQL インジェクションのサンプル分析といくつかの一般的な攻撃正規表現を防止します
45ソースコードや重要な設定情報の公開を防ぐPHPセキュリティ
46投稿が繰り返しデータを送信するのを防ぐPHP簡単な例
47URL送信による偽造データを防ぐPHPメソッド
48PHP フォームの繰り返し送信を防ぐいくつかの一般的な方法のまとめ
49php アドレスバー URL からの偽造データの送信を防ぐ方法
50php オフサイトからのフォームのリモート送信を防ぐ方法
51phpの防止 SQLインジェクション用のページングパラメータのフィルタリングの例
52 PHPセキュリティ: Apacheモードでインストールする場合に考えられる攻撃と解決策
53 PHPセキュリティ: ファイルシステムのセキュリティと予防策
54 PHP セキュリティ ファイルシステムのセキュリティ - ヌル文字の問題
55 PHP セキュリティ データベースのセキュリティ - SQL インジェクションと予防策
56 PHP セキュリティの概要と一般原則
57 PHP のセキュリティは可能CGI モードでインストールした場合 遭遇した攻撃と解決策
58PHP セキュリティ ユーザー送信データ
59PHP セキュリティ データベース セキュリティ - 設計、接続、暗号化
60PHP セキュリティ 魔法の引用符 - 魔法の引用符とは何か、そしてその方法使用するには
61PHP セキュリティ PHP スクリプト拡張機能の隠蔽
62登録グローバルを使用した PHP セキュリティ
63PHP セキュリティ エラー報告
64php 悪意のあるものを防ぐリフレッシュとチケットのブラッシング方法
65php Web サイトの更新を防ぐ方法
66 PHP Web サイトの一般的なセキュリティ脆弱性の概要と、対応する予防策
関連推奨事項:
PHP 開発におけるセキュリティ問題の関連概要_ PHP チュートリアル
以上がPHP 開発のセキュリティ問題の一部をまとめましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。