ホームページ バックエンド開発 PHPチュートリアル スクリプトセキュリティの本質_PHP+MYSQL ページ 1/3_PHP チュートリアル

スクリプトセキュリティの本質_PHP+MYSQL ページ 1/3_PHP チュートリアル

Jul 21, 2016 pm 03:50 PM
php+mysql 1つ 優れた コード 序文 存在する 安全性 レベル 応用 自然 レベル 脚本

1 はじめに 問題の存在
コードレベル、つまりアプリケーションレベルからコードセキュリティを考慮すると(つまり、基礎となる言語自体の脆弱性を考慮せずに)、スクリプトセキュリティの問題は関数と変数に関するものになります。変数は、直接的または間接的にユーザーから安全でない入力を受け取ります。PHP 自体の特性により、この種の変数の混乱は PHP で発生しやすくなります (多くの PHP プログラムは、変数の定義、初期化、受け取りに使用されますが、これらの変数は変数の定義、初期化、受け取りに使用されます)。 $id などの変数の初期化は PHP の設定によって完全に完了します。注意しないと変数が混乱して攻撃につながる可能性があります。
変数が安全でない入力を受け取り、適切なフィルタリングなしでさまざまな場所で使用されると、さまざまな害を引き起こす可能性があります。データベースに直接入力してユーザーに表示すると、クロスサイト スクリプティング攻撃につながる可能性があります。SQL ステートメントで使用すると、SQL インジェクション攻撃につながる可能性があります。さまざまなスクリプト言語がすべて存在する可能性があります。 PHP 変数は非常に柔軟であるため、これらの有害な変数が一部の論理ステートメントで使用されると、認証失敗などの重要なコードのスキップや一部の変数の初期化のスキップが発生し、プログラム ロジックの混乱やその他の脆弱性が発生します。この変数が include などの危険な関数で使用された場合、fopen 関数で使用された場合はファイル インクルードの脆弱性が発生し、mysql_query 関数で使用された場合はファイル書き込みの脆弱性が発生する可能性があります。 SQL インジェクションの脆弱性、eval および preg_replace はコードの実行につながる可能性があり、htmlspecia 関数に出現するとエラーが発生する可能性があり、絶対パス リーク変数が出現する環境によってその可能性のある害が決まります。
問題の存在を考えると、この種の脆弱性をコードレベルから確認するにはどうすればよいでしょうか?もちろん、PHP 言語に慣れることが最も基本的なことです。また、危険な関数に変数がある場合は、その変数のソース、正しく初期化されているか、機密文字が使用できるかどうかを把握する必要があります。初期化後にこれらの機密文字が関数に入る前に完全に消去されているかどうか。コードレビュー作業の難しさは、変数のソースを特定することにある可能性があります。これには、PHP の機能とレビューしているコードに精通している必要がありますが、変数のすべてのソースが明確に表示されるわけではなく、一部の初期化コードは、実行したときほど明確ではない場合があります。想像力を働かせて実行してください。変数内の一部は、取得したくない場所から取得されている可能性があります。また、一部の変数は、データベースまたはシステム構成ファイルから取得されている可能性がありますが、データベースと構成ファイルには、または、これらの変数は後で安全に操作されず、信頼できません。次にスクリプトコードの安全性を変数と関数の考え方に従って考えていきます。
2 変数はどこから来たのでしょうか?
1 表示された入力
変数の由来を呼び出すということは、実際に脅威がどこから来たのかを意味します。Web からだけ考えると、どのような Web サイトが最も安全でしょうか。明らかに、静的な HTML ページのみを提供する Web サイトが最も安全です。そのような Web サイトは、密閉された銀行を強盗するようなものですが、大規模なフォーラムやスクリプトの場合は実現が困難です。ログインするときは、ユーザー名やパスワードなどの変数をサーバーに渡す必要があります。これは、サーバーとの対話をキャプチャするプロセスによってもたらされます。投稿を投稿すると、プログラムによってキャプチャされます。送信されたフォームやアドレス バーのパラメータなど、ブラウザとサーバー間のデータ送信が表示される可能性がありますが、表示できないものは次のとおりです。 Cookie と HTTP ヘッダーは送信されたデータ、つまり変数です。これらの場所は、サーバーがデータを処理するための最初の入り口でもあります。では、PHP プログラムはどのようにして変数を受け入れるのでしょうか?送信されたすべての変数は、
$_GET
$_POST
$_COOKIE
$_FILES
$_SERVER を含む、php によっていくつかの配列に保存されます
初期の利便性と柔軟性のために、php 設定にそのようなオプションがあります
register_globals
このオプションがオンの場合, 上記で出てくる変数は$GLOBALSのメンバーとなり、スクリプト内で取得しなくても直接利用できるようになり、
variables_order
の順に上書きされます。多くのプログラムは register_globals がオフであるとみなしているため、プログラムの初期化時に次のコードを使用します。
@extract(daddslashes($_GET)); これらのコードは register_globals の役割を果たします。 POSTやGETの内容をグローバル変数として解放する機能ですが、後述するように危険性の方が大きい可能性があります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/319476.html技術記事 1 はじめに 問題の存在 コード レベル、つまりアプリケーション レベルで (つまり、基礎となる言語自体の脆弱性を考慮せずに) コード セキュリティを考慮すると、スクリプトのセキュリティ問題は...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iPhoneのホーム画面から削除を元に戻す方法 iPhoneのホーム画面から削除を元に戻す方法 Apr 17, 2024 pm 07:37 PM

iPhoneのホーム画面から削除を元に戻す方法

清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす 清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす Jun 12, 2024 pm 08:38 PM

清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす

エージェントを一文で作成!ロビン・リー: 誰もが開発者になる時代が来る エージェントを一文で作成!ロビン・リー: 誰もが開発者になる時代が来る Apr 17, 2024 pm 02:28 PM

エージェントを一文で作成!ロビン・リー: 誰もが開発者になる時代が来る

Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Jun 04, 2024 pm 02:53 PM

Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか?

Mistral オープン ソース コード モデルが王位を獲得します。 Codestral は 80 を超える言語でのトレーニングに熱心に取り組んでおり、国内の Tongyi 開発者が参加を求めています。 Mistral オープン ソース コード モデルが王位を獲得します。 Codestral は 80 を超える言語でのトレーニングに熱心に取り組んでおり、国内の Tongyi 開発者が参加を求めています。 Jun 08, 2024 pm 09:55 PM

Mistral オープン ソース コード モデルが王位を獲得します。 Codestral は 80 を超える言語でのトレーニングに熱心に取り組んでおり、国内の Tongyi 開発者が参加を求めています。

PHP セキュリティのベスト プラクティスを実装する方法 PHP セキュリティのベスト プラクティスを実装する方法 May 05, 2024 am 10:51 AM

PHP セキュリティのベスト プラクティスを実装する方法

C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス Jun 01, 2024 am 09:26 AM

C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス

Struts 2 フレームワークのセキュリティ構成と強化 Struts 2 フレームワークのセキュリティ構成と強化 May 31, 2024 pm 10:53 PM

Struts 2 フレームワークのセキュリティ構成と強化

See all articles