ホームページ バックエンド開発 PHPチュートリアル Web ファイル操作の解析における一般的なセキュリティの脆弱性 (ディレクトリおよびファイル名の検出の脆弱性)_PHP チュートリアル

Web ファイル操作の解析における一般的なセキュリティの脆弱性 (ディレクトリおよびファイル名の検出の脆弱性)_PHP チュートリアル

Jul 21, 2016 pm 03:02 PM
web コード する セキュリティの脆弱性 一般 開発する 私たち 操作する 書類 ファイル名 検出 抜け穴 目次 解析する

Web 開発を行うとき、抜け穴が頻繁に現れるいくつかのコア機能やロジックをランダムにチェックすることがよくあります。技術チームが成長するにつれて、チームメンバーのスキルはますます成熟していきます。 一般的な愚者型 SQL インジェクションの脆弱性と XSS の脆弱性。今後もその数はどんどん減っていきますが、時折現れる新たな隠れた脆弱性も見つかるでしょう。これらの脆弱性のほとんどは、開発者の機能または共通モジュール機能の設計が不十分なために発生し、問題が残されたままになります。以前は、いくつかの機能モジュールを完了することができましたが、現在では、安全かつ正しい方法でモジュールを完了することが要件となります。 次に、設計上の理由により脆弱性を引き起こす一般的な機能モジュールをいくつか紹介します。次に、まずファイル読み取り機能の脆弱性を見てみましょう。
まず次のコードを見てみましょう。これには、ユーザーが入力したさまざまなディレクトリにさまざまなファイルが含まれています

コードをコピーします コードは次のとおりです:

/// module name
$mod = isset( $_GET['m'])?trim($_GET['m']):'index';
///上位ディレクトリにジャンプしないようにディレクトリ名をフィルタリングします
$mod = str_replace(".."," .",$mod);
///ファイルを取得します
$file = "/home/www/blog/".$mod.".php";
// /Include the file
@include($file);

このコードは、多くの友人が作成したプログラムで遭遇した可能性があります。また、初心者にとっては、ウォークスルー中にこのコードに遭遇したときのことを思い出してください。私は、このコードの安全性を確保してもらえますか、と尋ねました。
回答: 1. 「..」ディレクトリが置き換えられるため、ユーザーによって渡されたモジュール名内のすべての .. ディレクトリが置き換えられます。
2. 結合されたファイル名を作成します。前部のディレクトリには制限があり、後部には拡張子が制限されます。
このコードは本当にディレクトリのセキュリティ検出を実現しますか?
$mod がこの値を渡した場合の結果がどのようになるかをテストしてみましょう。 image

$mod 入力 ?mod=…%2F…%2F…%2F…%2Fetc%2Fpasswd%00 を構築すると、結果は次のようになります:

image

実際には include("/etc/passwd") ファイルです。
どうやって私のパラメータ制限を回避しましたか?
まず第一に:
ユーザー入力を制限するためにパラメーター フィルター タイプを使用するのは良い方法ではありません。テストできる場合は、テストに失敗する限り、置き換えないでください。それ!これは私たちの原則の 1 つです。フィルタリングの失敗は無数にあります。実際のプロセスを見てみましょう。
1.「..」を「.」に置き換えて「…/…/…/」と入力します
2.結果は「../../../」になります
はい、友達が尋ねます、直接スペースに置き換えた方が良いでしょうか?確かにこれで代用可能です。ただし、将来的にすべてをスペースに置き換えることができるという意味ではありません。別の例を見てみましょう。例: 誰かが文字列内の JavaScript を置き換えました。コードは次のとおりです:

コードをコピーします コードは次のとおりです:

...
$msg = str_replace("javascript","",$msg);

のようです。 javascriptは表示されませんが、 jjavascriptavascript と入力して置き換えると、真ん中が空になった後に置き換えます。先頭の「j」と次の「j」は新しい JavaScript を形成します。

2 番目: その背後にある .php 制限を回避する方法を見てみましょう。ユーザーが入力したパラメータは次のとおりです: "etc/passwd

1. ホワイトリスト制限とは

コードをコピーします

コードは次のとおりです:


例:
$mod = isset($_GET['m'])?trim($_GET['m']):'index'; ///モジュール名を読み取った後、
mod 変数の値の範囲 ifこれは列挙型の場合:
if(!in_array($mod,array('user','index','add','edit'))) exit('err!!!');
完全修飾$ mod はこの配列にしか入れられないので、とても残酷です。 ! ! !

2. ホワイトリスト制限を実装する方法
先ほどの例を通して、列挙型の場合は値をリストに直接入力するだけであることがわかりました。ホワイトリストによる別の制限方法もあります。文字範囲を制限するためです

コードをコピーします コードは次のとおりです:

例:
$mod = isset($_GET['m'])?trim($_GET['m ']):'index '; ///モジュール名を読むと、一般的なサイトの場合、$mod は文字と数字とアンダースコアであることがわかります。
if(!preg_match(“/^w+$/”,$mod)) exit(‘err!!!’);
文字は [A-Za-z0-9_] これらのみです。十分残酷だ! ! !


概要: ホワイトリスト制限方法は実際には非常に簡単であることがわかりましたか? その場所で何が必要かがわかっている場合は、入力が必要なものを確認するだけです。さらに、未知の文字を置き換えるよりも、すでに知っている文字を検出する方がはるかに簡単です。 問題を解決する正しい方法により、ファイルがよりシンプルかつ安全になります。 !

http://www.bkjia.com/PHPjc/327917.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327917.html技術記事 Web 開発を行うとき、抜け穴が頻繁に現れるいくつかのコア機能やロジックをランダムにチェックすることがよくあります。技術チームが成長するにつれて、チームメンバーの技術的な日々...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

人工知能の 10 の制限 人工知能の 10 の制限 Apr 26, 2024 pm 05:52 PM

技術革新の分野において、人工知能 (AI) は現代の最も革新的で有望な発展の 1 つです。人工知能は、大量のデータを分析し、パターンから学習し、インテリジェントな意思決定を行う能力により、医療、金融から運輸、エンターテイメントに至るまで、多くの業界に革命をもたらしました。しかし、AI は目覚ましい進歩にもかかわらず、その可能性を最大限に発揮することを妨げる重大な制限や課題にも直面しています。この記事では、人工知能のトップ 10 の制限を詳しく掘り下げ、この分野の開発者、研究者、実務者が直面している制限を明らかにします。これらの課題を理解することで、AI 開発の複雑さを乗り越え、リスクを軽減し、AI テクノロジーの責任ある倫理的な進歩への道を開くことができます。利用可能なデータが限られている: 人工知能の開発はデータに依存します

おすすめのAI支援プログラミングツール4選 おすすめのAI支援プログラミングツール4選 Apr 22, 2024 pm 05:34 PM

この AI 支援プログラミング ツールは、急速な AI 開発のこの段階において、多数の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開発効率を向上させ、コードの品質を向上させ、バグ率を減らすことができます。これらは、現代のソフトウェア開発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問​​題解決とコラボレーションにより集中できるようになります。ギット

どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る Apr 07, 2024 am 09:10 AM

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

MIT の最新傑作: GPT-3.5 を使用して時系列異常検出の問題を解決する MIT の最新傑作: GPT-3.5 を使用して時系列異常検出の問題を解決する Jun 08, 2024 pm 06:09 PM

今日は、MIT が先週公開した記事を紹介します。GPT-3.5-turbo を使用して時系列異常検出の問題を解決し、時系列異常検出における LLM の有効性を最初に検証しました。プロセス全体に微調整はなく、GPT-3.5-turbo は異常検出に直接使用されます。この記事の核心は、時系列を GPT-3.5-turbo が認識できる入力に変換する方法とその設計方法です。 LLM が異常検出タスクを解決できるようにするためのプロンプトまたはパイプライン。この作品について詳しく紹介していきます。画像用紙タイトル:Large languagemodelscanbeゼロショタノマリデテ

Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Mar 28, 2024 pm 10:00 PM

Go 言語開発モバイル アプリケーション チュートリアル モバイル アプリケーション市場が活況を続ける中、ますます多くの開発者が Go 言語を使用してモバイル アプリケーションを開発する方法を検討し始めています。シンプルで効率的なプログラミング言語として、Go 言語はモバイル アプリケーション開発でも大きな可能性を示しています。この記事では、Go 言語を使用してモバイル アプリケーションを開発する方法を詳しく紹介し、読者がすぐに始めて独自のモバイル アプリケーションの開発を開始できるように、具体的なコード例を添付します。 1. 準備 始める前に、開発環境とツールを準備する必要があります。頭

改良された検出アルゴリズム: 高解像度の光学式リモートセンシング画像でのターゲット検出用 改良された検出アルゴリズム: 高解像度の光学式リモートセンシング画像でのターゲット検出用 Jun 06, 2024 pm 12:33 PM

01 今後の概要 現時点では、検出効率と検出結果の適切なバランスを実現することが困難です。我々は、光学リモートセンシング画像におけるターゲット検出ネットワークの効果を向上させるために、多層特徴ピラミッド、マルチ検出ヘッド戦略、およびハイブリッドアテンションモジュールを使用して、高解像度光学リモートセンシング画像におけるターゲット検出のための強化されたYOLOv5アルゴリズムを開発しました。 SIMD データセットによると、新しいアルゴリズムの mAP は YOLOv5 より 2.2%、YOLOX より 8.48% 優れており、検出結果と速度のバランスがより優れています。 02 背景と動機 リモート センシング技術の急速な発展に伴い、航空機、自動車、建物など、地表上の多くの物体を記述するために高解像度の光学式リモート センシング画像が使用されています。リモートセンシング画像の判読における物体検出

PHPにおけるmidpointの意味と使い方の分析 PHPにおけるmidpointの意味と使い方の分析 Mar 27, 2024 pm 08:57 PM

【PHPにおけるミッドポイントの意味と使い方の分析】 PHPでは、ミッドポイント(.)は2つの文字列やオブジェクトのプロパティやメソッドを接続するためによく使われる演算子です。この記事では、PHP における中間点の意味と使用法を詳しく掘り下げ、具体的なコード例を示して説明します。 1. 文字列中間点演算子の接続 PHP での最も一般的な使用法は、2 つの文字列を接続することです。 2 つの文字列の間に . を置くと、それらをつなぎ合わせて新しい文字列を形成できます。 $string1=&qu

Java フォルダーをループしてすべてのファイル名を取得する方法 Java フォルダーをループしてすべてのファイル名を取得する方法 Mar 29, 2024 pm 01:24 PM

Java は、強力なファイル処理機能を備えた人気のあるプログラミング言語です。 Java では、フォルダーを走査してすべてのファイル名を取得するのが一般的な操作であり、これは特定のディレクトリー内のファイルを迅速に見つけて処理するのに役立ちます。この記事では、Java でフォルダーを走査してすべてのファイル名を取得するメソッドを実装する方法と、具体的なコード例を紹介します。 1. 再帰的メソッドを使用してフォルダーを走査する 再帰的メソッドを使用してフォルダーを走査することができます。再帰的メソッドはそれ自体を呼び出す方法であり、フォルダーを効果的に走査できます。

See all articles