検索
ホームページphp教程php手册PHP str_replace の置換の脆弱性

PHP str_replace の置換の脆弱性

Jun 13, 2016 pm 12:30 PM
phpreplacestr使用関数交換する抜け穴使用法

定義と使用法
str_replace() 関数は、文字列を使用して文字列内の他の文字を置き換えます。

構文
str_replace(find,replace,string,count)

パラメータ 説明
find 必須。検索する値を指定します。
交換が必要です。 find の値を置き換える値を指定します。
文字列が必要です。検索する文字列を指定します。
カウントはオプションです。置換の数をカウントする変数。

ヒントとメモ
注: この関数では大文字と小文字が区別されます。大文字と小文字を区別しない検索を実行するには、str_ireplace() を使用してください。

注: この関数はバイナリ セーフです。

例 1

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


< ;?php
echo str_replace("world","John","Hello world!");
?>


出力:

こんにちは、ジョン!

例 2
この例では、配列とカウント変数を使用した str_replace() 関数を示します。

コードをコピー コードは次のとおりです。


$arr = array("blue","re​​d","green"," yellow");
print_r( str_replace("red","pink",$arr,$i));
echo "置換:
?> 出力:
配列

(
[0] => 青
[1] => ピンク
[2] => 緑
[3] => 黄
)
置換: 1


例 3


コードをコピー

コードは次のとおりです。 $find = array("Hello","world");

$replace = array("B");
$arr = array( "Hello","world", "!");
print_r(str_replace($find,$replace,$arr));


出力:

配列

(
[0] => B
[1] =>

$arr1 = Array(
'http ://img.jb51.net/img/offer/29/24/70/20/29247020'、
'http://img.jb51.net/img/offer/29/24/70/20/ 29247020-1',
'http://img.jb51.net/img/offer/29/24/ 70/20/29247020-2'
$arr2 = Array( 'http://localhost/root/ups/af48056fc4.jpg'、
'http://localhost/root/ups/cf33240aa3.jpg'、
'http://localhost/root/ups/ c30e40419b.jpg'
);
$data = '
PHP str_replace の置換の脆弱性
PHP str_replace の置換の脆弱性 ://img.jb51.net/img/offer/29/24/70/20/29247020-2"/> ;';
$data = str_replace($arr1,$arr2,$data);
var_dump($data);
?>

置換後の結果は次のとおりです:


string(169) "PHP str_replace の置換の脆弱性PHP str_replace の置換の脆弱性PHP str_replace の置換の脆弱性"str_replace 関数の宣言はおそらく次のようになります: str_replace($search, $ replace, $input[,&$count])。たとえば、文字列 $ を置換する場合input はソース文字列 (データ ソースと呼ばれます) であり、str_pos、strtok、str_repeat およびその他の関数はすべて最初の位置にデータ ソースを配置するため、これは不合理です。配列内の対応する文字列を置き換えるのではなく、配列内の最初の文字列を置き換えます。その後、重複する文字列の後に同一の文字列がマージされます。

解決策:
function strrplace($arr1,$arr2,$data){
if(is_array($arr1)) {
foreach($arr1 as $key => $ value) {
$data = str_replace_once($value, $arr2[$key], $data);
} }
return $data;
}
function str_replace_once($needle , $replace, $data) //初回置換
{
$pos = strpos($data, $needle);
if ($pos === false) {
return $ data ;
}
return substr_replace($data, $replace, $pos, strlen($needle));
}
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境