phpセキュリティフィルタリング
/*ansicコード-URLコードテーブル: http://www.w3school.com.cn/tags/html_ref_urlencode.html
-------------- ------------ -------------------------------------- ------------ -------------------------------------- ------------
1. ユーザー入力の検証とフィルタリング
最も一般的な英数字入力であっても、セキュリティ上の問題を引き起こしやすい文字をいくつか紹介します:
!$ ^ & * ( ) ~ [ ] { } ' " ; ? - `
データベース内で特別な意味を持つ文字:
'" ; いくつかの非印刷文字もあります:
文字 x00 または ASCII 0、NULL または FALSE
文字 x10 と x13、または ASCII 10 と 13、n r
文字 x1a または ASCII 26 は、ファイルの終わりを示します
間違ったパラメータ タイプを入力すると、予期せぬ問題が発生する可能性もありますプログラム内のエラー。
パラメータ値を入力しすぎると、オーバーフローやその他のエラーが発生する可能性があります。
2. ファイルのパスと名前のフィルタリング
ファイル名にバイナリ データを含めることはできません。そうしないと問題が発生する可能性があります。
一部のシステムでは Unicode マルチバイトでエンコードされたファイル名を使用できますが、それを避け、代わりに ASCII 文字を使用するようにしてください。
Unix システムではファイル名設定でほぼすべての記号を使用できますが、- と _ を使用し、他の文字の使用は避けてください。
同時に、ファイル名の長さを制限する必要があります。
3. SQL インジェクションを防ぐ
ユーザー入力が数値の場合は、次の方法を使用できます:
is_int() 関数 (または is_integer() または is_long() 関数)
gettype() 関数を使用する
intval() 関数を使用する
settype() 関数を使用する
strlen() 関数を使用してユーザー入力文字列の長さを確認する
日付または時刻が有効かどうかを確認するには、strtotime() 関数を使用できます
4. XSS 攻撃を防止する
xss 攻撃の一般的な方法は、PHP に組み込まれている js スクリプトを実行するために HTML 要素を挿入することです。いくつかの防御機能 (htmlentities や htmlspecialchars など)
5. ユーザーが送信した URL をフィルターする
ユーザーが URL を入力して画像やリンクを呼び出すことが許可されている場合は、http 以外の URL を渡さないようにする必要があります。 javascript:、vbscript:、data: などのプロトコル。
PHPの組み込み関数parse_url()関数を利用してURLを分割して判定することができます。
6. リモート実行の防止 -- 次の表に、シェルに関連するいくつかの文字を示します:
リモート実行では通常、eval() 関数などの PHP コード実行を使用するか、exec()、passthru ()、proc_open などのコマンド実行を呼び出します。 ()、shell_exec()、system()、または Popen()。
PHP コードの挿入: PHP は、開発者に PHP スクリプトを呼び出すためのさまざまな方法を提供します。ユーザーが制御可能なデータのフィルタリングに注意を払う必要があります。
7. シェルコマンドの実行
PHP には、exec() 関数や ` (バックティック) など、システムコマンドを直接実行できるいくつかの関数が用意されています。
PHP のセーフ モードはある程度の保護を提供しますが、セーフ モードをバイパスする方法もいくつかあります:
1. サーバーがサポートする環境に Perl スクリプト、または Python や Ruby などをアップロードして、スクリプトを実行します。他の言語では PHP セーフ モードをバイパスします。
2. システムのバッファ オーバーフローの脆弱性を利用して、セーフ モードをバイパスします。
シェルに関連するいくつかの文字:
名前文字 ASCII 16 進 URL エンコード HTML エンコード
改行 10 22 " または "
ドル記号 $ 36 x24 %24 $
コネクタ & 38 x26 %26 & #38 または amp
一重引用符 ' 39 x27 %27 '
左括弧 ( 40 x28 %28 (
右括弧) 41 x29 %29 )
アスタリスク* 42 x2a %2a *
ハイフン - 45 x2d %2d -
セミコロン; 59 x3b %3b ;
左山括弧
直角括弧 62
疑問符? 63 x3f %3f ?
左括弧 [91 x5b %5b [
バックスラッシュ 92 x5c %5c \
右角括弧] 93 x5d %5d ]
キャレット ^ 94 x5e %5e ^
バッククォート ` 96 x60 %60 `
左中括弧 { 123 x7b %7b {
パイプ 124 x7c %7c |
右中括弧} 125 x7d %7d }
チルダ ~ 126 x7e %7e ~
---------------------------- ---------- -------------------------------------- ---------- -----------------------
セキュリティフィルター機能コード*/
/**
* 安全なフィルタリング入力 [jb]
*/
function check_str($string , $isurl = false)
{
$string= preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F]/','', $string); //制御文字を削除
$string= str_replace(array("
empty($isurl)&& $string =preg_replace("/&(?!(#[0-9]+|[a-z]+);)/si",'&',$string);//HTML 内xx; を使用して、(スペース)、? Unicode 文字などの一部の文字をエンコードできます。A(?!B) は、A の後に B が続かないことを意味するため、作成者は同様の HTML エンコード文字を保持したいと考えています。問題の文字
を削除します $string= str_replace(array("%3C",'
$ string= str_replace(array("%3E",'>'),'>',$string);
$string= str_replace(array('"',"'","t", ' ') ,array('"',''','',' '),$string);
returntrim($string);
}
/**
* セキュリティフィルタリングクラス - JavaScript、CSS、iframe、オブジェクトなどの安全でないパラメータをフィルタリングします。 高いフィルタリングレベル
* @param string $value フィルタリングする必要がある値
* @return string
*/
function fliter_script( $value) {
$value=preg_replace("/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dblclick|move|reset|resize|submit )/i ","&111n\2",$value);
$value= preg_replace("/(.*?)/si","",$value);
$value= preg_replace(" /(.*?)/si","",$value);
$value= preg_replace ("//iesU", '', $value);
return$value ;
}
/**
* セキュリティフィルタリングクラス - HTMLタグのフィルタリング
* @param string $value フィルタリングする値
* @return string
*/
function filter_html($value) {
if(function_exists('htmlspecialchars')) return htmlspecialchars($value);
returnstr_replace(array(" &", '"', "'", ""), array("&", """, "'",""), $value) ;
}
/**
* セキュリティ フィルタリング クラス - SQL インジェクションを防ぐために受信データに下線を付けます
* @param string $value フィルタリングする値
* @return string
*/
function filter_sql($value) {
$sql= array("select", 'insert', "update", "delete","' ", " /*","../", "./","union", "into", "load_file","outfile");
$sql_re=array("","","" 、"" 、""、""、""、""、""、""、""、"");
returnstr_replace($sql, $sql_re, $value);
}
/**
* セキュリティ フィルタリング クラス - 一般的なデータ フィルタリング
* @param string $value フィルタリングする必要がある変数
* @return string|array
*/
function filter_escape($value) {
if(is_array($value)) {
foreach($value as $k => $v) {
$value[$ k]= self::fliter_str($v);
}
}else {
$value= self::fliter_str($value);
}
return$value;
}
/**
* セキュリティフィルタリングクラス - 特殊な有害な文字をフィルタリングするための文字列フィルタリング
* @param string $value フィルタリングされる値
* @return string
*/
function filter_str($value) {
$badstr= array("

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
