0

テンプレート駆動型の Web サイトを作成していますが、Smarty や Twig などの PHP テンプレート パッケージは使用せず、完全に独自のコーディングです。

これは 1 つのテンプレート (mypage.php) です: (ページに収まるように移動)

<TITLE>{$title}</TITLE>
<TABLE>
<TR><TD>{$maker}</TD><TD>{$model}</TD><TD>{$trim}</TD><TD>{$body}</TD>
<TD>{$price}</TD>
</TABLE>

コンテンツは、次のように MySQL データベースから取得されます。

<?php
mysql_connect("localhost", "mylogin", "password") or die(mysql_error());
mysql_select_db("test12") or die(mysql_error());
$query  = "SELECT name, subject, message FROM contact";
$result = mysql_query($query);

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "<table><td>{$row['maker']} <br><TD>{$row['model']}</TD><TD>{$row['trim']}</TD><TD>{$row['price']}</TD>" .

}

私はそれを正しくやったと思いますが、もし間違っていたら教えてください...それは私の最初の適切な試みです! (stackoverflow.com に合わせて編集)

乾杯

4

1 に答える 1

0

私が見た間違いの 1 つは、データベースから取得した値をエスケープしていないことです。
これにより、XSS を使用できるようになります。

エコー部分を次のように変更します。

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
  $maker = htmlspecialchars($row['maker']);
  $model = htmlspecialchars($row['model']);
  $trim = htmlspecialchars($row['trim']);
  $price = htmlspecialchars($row['price']);

  echo "<table><td>{$maker}<br><TD>{$model}</TD><TD>{$trim}</TD><TD>{$price}</TD>".
}
于 2011-08-04T09:37:46.573 に答える