ホームページ  >  記事  >  バックエンド開発  >  PHP 開発のセキュリティ問題の一部をまとめました

PHP 開発のセキュリティ問題の一部をまとめました

不言
不言オリジナル
2018-04-04 14:24:542522ブラウズ

PHP 開発のセキュリティ問題を整理します



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 ステートメントについては、ユーザーが元の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。