PHPについて今さら気づいたこと

PHP Mailerの脆弱性が巷で話題になってますね。
この脆弱性の内容を簡単に説明すると、メールを作成する際のデータの入力値チェックに不備があって任意のコードが実行できてしまうというものです。

この脆弱性に関する調査記事を読んでいて今さらながら気づいたことがあるんですが、PHPってHTML以外のデータが混入していても動作するんですね。

ランダムな文字列が混入していても。。。
ter01.png

動作します。
ranchar.png

アスキーアートが混入していても。。。
ter02.png

動作します。
AA.png

バイナリデータが混入していても。。。
ter03.png

動作します。
binary.png

PHPはHTMLに埋め込むものという先入観があったので意外な感じがしました。

以上。


PHPアプリケーションにPOSTを送るときはContent-Typeヘッダを必ず指定しなければダメ

自作PHPアプリケーションのテストで、以下のようなリクエストをtelnetで送ったのだが、何故か上手くいかなかった。

POST /test.php HTTP/1.1
Host: example.com
Content-Length: 25

vaule1=hello&value2=world



調べてみたら、PHPはContent-Typeヘッダを見てbodyの中身を解釈するので、Content-Typeヘッダは必須とのこと。

POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 25

vaule1=hello&value2=world



これで解決。

以上

参考URL
http://tonetsutomu.com/tone/node/67

PHPのexitやdie関数について

PHPのexitやdie関数はPHPのスクリプトを終了するだけでなく、そのあとに続くHTMLタグもぶった切ってしまう。

exit.png
上の画像を参照すれば分かるかと思いますが、本来あるべき</body>や</html>などの終了タグが消えています。
以下はコード例

#exit関数の呼び出し
if(ctype_digit($price) == false) {
exit("無効な入力です。");

}##これより下の処理はすべて無視
print('<p>');
print htmlspecialchars($price, ENT_QUOTES, 'UTF-8');
print('円の税込、税別の金額は以下の通り');
print('</p>');
print('<b>');

print htmlspecialchars(round($incTax), ENT_QUOTES, 'UTF-8');
print('円(税込)');
print('<br />');
print('<br />');


print htmlspecialchars(round($exTax), ENT_QUOTES, 'UTF-8');
print('円(税別)');
print('<br />');
print('</b>');
?>
</body>
</html>


以上

プロフィール

トニヒコ

Author:トニヒコ
趣味は旅行と読書とマンガ。
将来の夢はコスモポリタン!

リンク・フリーです。

My hobby is traveling and reading(include manga).
My dream is to become cosmopolitan!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
スポンサード リンク
マクロミルへ登録
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR