MyController

WEB業界素人の僕がまた見返しそうなことのメモです。

脆弱コード(スクリプト挿入攻撃)

下記は危険なコードなので絶対に公開しないように!

URL末尾に?id=2をつけると攻撃されたと表示。

対策:htmlspecialchars()

<?php
function get_post_data($id=0){
$post_data=array(
1 => '1件目の投稿です。特に問題ありません。',
2 => '2件目の投稿です。<script>alert("攻撃をうけた");</script>',
);
if(isset($post_data[$id])===true){
return $post_data[$id];
}
}

//投稿データ取得
if(isset($_GET['id'])===true){
$id=intval($_GET['id']);
}else{
$id=1;
}
$post_data=get_post_data($id);

//取得結果出力
echo<<<EOF
<html>
<head>
<title>投稿データ表示画面</title>
</head>
<body>
<fieldset>
<legend>{$id}件目の投稿データ</legend>
$post_data
</fieldset>
</body>
</html>
EOF;