ホームページ  >  記事  >  バックエンド開発  >  PHP 開発のセキュリティ問題のいくつかを整理する

PHP 開発のセキュリティ問題のいくつかを整理する

WBOY
WBOYオリジナル
2016-06-23 13:31:241004ブラウズ

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">



このように、処理するデータを送信した後。 .php、php は $username 変数を登録し、この変数データを process.php に送信し、そのような変数を POST または GET リクエスト パラメーターに設定します。初期化が表示されない場合、以下の問題が発生します(参考:http://www.lai18.com/content/434606.html)

<?php// Define $authorized = true only if user is authenticatedif (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は、XSS攻撃を防ぐためのSQL注入機能を防ぐSQLインジェクション機能を防止しています

3PHPセキュアプログラミング:出力を逃がす:4PHPセキュアプログラミング:フィルターユーザー入力


5PHPセキュアプログラミング:ユーザビリティとデータ追跡

6PHP セキュア プログラミング: 関係のない人にエラー メッセージを見させないでください

7PHP セキュア プログラミング: register_globals のセキュリティ

8PHP セキュア プログラミング: Web サイトのセキュリティ設計の原則

9PHP セキュア プログラミング: フォーム スプーフィング送信について

10PHP セキュア プログラミング: HTTP リクエスト スプーフィング

11PHP セキュア プログラミング: データベース アクセスを公開しない

12PHP セキュア プログラミング: クロスサイト リクエスト フォージェリ CSRF 防御

13PHP セキュア プログラミング: フォームとデータのセキュリティ

14PHP セキュア プログラミング: URL のセマンティクスからの攻撃

15PHP セキュア プログラミング: ファイル アップロード攻撃に対する防御

16PHP セキュア プログラミング: クロスサイト スクリプティング攻撃に対する防御

17PHP セキュア プログラミング: 正当なセッションを取得するためのセッション固定

18PHP セキュア プログラミング: SQL インジェクションを防ぐ

19PHP セキュア プログラミング: Cookie の公開はセッション ハイジャックにつながる

20PHP セキュア プログラミング: ソース コードの公開を防ぐ

21PHP セキュア プログラミング: バックドア URL に注意する

22PHPセキュリティプログラミング: セッションハイジャックに対する防御

23PHP セキュア プログラミング: ブルート フォース攻撃

24PHP セキュア プログラミング: パスワード スニッフィングとリプレイ攻撃

25PHP セキュア プログラミング: ログイン ステータスを記憶する安全な方法

26PHP セキュア プログラミング: シェル コマンド インジェクション

27PHP セキュリティ プログラミング:リモートファイルを開くリスク

28PHP セキュアプログラミング: ファイルディレクトリ推測の脆弱性

29PHP セキュアプログラミング: ファイル名の操作の防止

30PHP セキュアプログラミング: ファイルに含まれるコードインジェクション攻撃

31PHP セキュアプログラミング: より良いセッションデータセキュリティ

32PHP セキュアプログラミング: 共有ホスティングのソースコードセキュリティ

33PHP セキュアプログラミング: セッションデータインジェクション

34PHP セキュアプログラミング: ホストファイルディレクトリの閲覧

35PHP セキュアプログラミング: PHP のセーフモード

36phpセキュリティ: $_GET 文字をエスケープせずに $ を直接使用して値を取得します

37php 脆弱性戦略を防止し、高パフォーマンスの Web を作成します

38XSS 攻撃とは何ですか? PHPによるXSS攻撃防止機能

39 フォームの繰り返し送信を防ぐphpの解析方法

40php セキュリティの犬尾継続

41PHP クロスドメインフォーム送信の防止

42php SQLインジェクションの詳細説明と防止

43php SQL インジェクションを防止 コード例

44php SQL インジェクションの例分析といくつかの一般的な攻撃正規表現を防止

45PHP ソースコードや重要な設定情報の公開を防ぐセキュリティ

46PHP の簡単な例投稿によるデータの繰り返し送信を防ぐ

47URL からの偽データの送信を防ぐ php メソッド

48PHP フォームの繰り返し送信を防ぐいくつかの一般的な方法のまとめ

49php からの偽データの送信を防ぐメソッドアドレスバー URL

50php フォームのオフサイトリモート送信を防ぐメソッド

51php SQL インジェクションを防ぐフィルター ページング パラメーターの例

52PHP セキュリティ: Apache モードでインストールする場合に考えられる攻撃と解決策

53PHP セキュリティ ファイルシステムセキュリティと予防策

54PHPセキュリティファイル システムセキュリティ??ヌル文字の問題

55PHPセキュリティデータベースセキュリティ??SQLインジェクションと予防策

56PHPセキュリティの概要と一般原則

57PHPセキュリティの考えられる攻撃と解決策CGI モードでインストールする場合

58PHP ユーザーが送信したデータのセキュリティ

59PHP データベースのセキュリティのセキュリティ??設計、接続、暗号化

60PHP 魔法の引用符のセキュリティ??魔法の引用符とその使用方法

61PHP 隠しPHPスクリプト拡張機能のセキュリティ

62Register Globalsを使用したPHPセキュリティ

63PHPセキュリティエラー報告

64php悪意のある更新とチケットブラッシングを防ぐ方法

65phpWebサイトの更新を防ぐ方法のまとめ

66PHP Webサイトの一般的なセキュリティ脆弱性と、対応する予防策のまとめ


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