PHP iconv関数文字列のトランスコードによる遮断問題
2422 ワード
1、iconv関数の原型
string iconv(stringドルinuchaset、stringドルouthaset、stringドルstr)
同前charset:入力された文字セット
out_charset:出力の文字セット
str:変換する文字列
phpマニュアルを具体的に見る:http://www.php.net/manual/zh/function.iconv.php
2、iconvによる文字列の切断
iconvは文字コード変換時に文字列が切断される可能性があります。strの中にターゲット文字セットによって表されない文字がある場合、strは最初の無効文字から切断され、E_が発生します。NOTICEです
例えば、$d=iconv(「UTF-8」、「gb 2312」、$c)、変数cをUTF-8から符号化してgb 2312に変換するコードです。gb 2312によって表されない文字が$cに存在すると、カットオフされます。
この文字の後の内容
3、fuzzスクリプト
$iが128である場合(0×80)出力する文字列は1.phpに切り捨てられます。なぜ0×80からカットオフして、utf 8とgbkの符号化範囲が見られます。http://www.docin.com/p-178554948.html
4、脆弱なケース
http://www.wooyun.org/bugs/wooyun-2014-048293
5、注意
テスト時、linux環境下では切断されないことが分かりました。windowsで成功しました。
原文:http://hi.baidu.com/qingsh4n/item/e3c4261e045d17161994ecaa
mbuconvertuencoding関数を使ってコードを変換することを推奨します。関数説明は参考です。http://www.php.net/mb_convert_encoding
string iconv(stringドルinuchaset、stringドルouthaset、stringドルstr)
同前charset:入力された文字セット
out_charset:出力の文字セット
str:変換する文字列
phpマニュアルを具体的に見る:http://www.php.net/manual/zh/function.iconv.php
2、iconvによる文字列の切断
iconvは文字コード変換時に文字列が切断される可能性があります。strの中にターゲット文字セットによって表されない文字がある場合、strは最初の無効文字から切断され、E_が発生します。NOTICEです
例えば、$d=iconv(「UTF-8」、「gb 2312」、$c)、変数cをUTF-8から符号化してgb 2312に変換するコードです。gb 2312によって表されない文字が$cに存在すると、カットオフされます。
この文字の後の内容
3、fuzzスクリプト
<?php
$a ="1.php";
$b =".jpg";for($i=0; $i<200; $i++){
$c = $a.chr($i).$b;
$d = iconv("UTF-8","gb2312", $c);
echo "$i ==> ".$d."n";}
$iが128である場合(0×80)出力する文字列は1.phpに切り捨てられます。なぜ0×80からカットオフして、utf 8とgbkの符号化範囲が見られます。http://www.docin.com/p-178554948.html
4、脆弱なケース
http://www.wooyun.org/bugs/wooyun-2014-048293
5、注意
テスト時、linux環境下では切断されないことが分かりました。windowsで成功しました。
原文:http://hi.baidu.com/qingsh4n/item/e3c4261e045d17161994ecaa
mbuconvertuencoding関数を使ってコードを変換することを推奨します。関数説明は参考です。http://www.php.net/mb_convert_encoding