現在、データベース コース プロジェクト用に PHP/HTML で Web インターフェイスを開発しています。
基本的に、入力フィールドがあります:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
これにより、DB 内のものを検索できます。
昨日の夕方、新しい index.php をアップロードした後、ページを更新したところ、ページが完全にスパム (「YO MAMAYO MAMAYO MAMA など」) でいっぱいだったため、ある種のインジェクションがありました (そうだったのですが)。
htmlspecialchars()
php 関数" " を使用してフォームを保護しました。また、ちょうど 10 分前に新しい index.php をアップロードしたところ、更新直後にページが「YO MAMA」でいっぱいになりました。
誰かがそれについて考えていますか?どうすれば自分のページを確認/保護できますか?
ありがとう
編集:フォームのコードは次のとおりです。
<div id="searchbox">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Query database : <input type="text" id="field" name="query">
<input type="submit" name="submit" value="Search!">
</form>
</div>
そして、私は次のように保護しました:
if(isset($_POST['query']) && !empty($_POST['query'])) {
$param = htmlspecialchars($_POST['query'], ENT_QUOTES);
...
私が与えることができる入力は何でも、目標は人やイベントなどを検索することです.私はindex.phpに含めるデータベースクラスファイルしか持っていません.
EDIT2:SQLクエリは次のとおりです:
SELECT p.idParticipant As id, a.name AS name, c.countryName AS country,
count(g.idGame) AS countGames
FROM Athlete a, Country c, Game g, Participant p, Event e
WHERE a.idAthlete = p.fkAthlete
AND p.fkCountry = c.idCountry
AND p.fkGame = g.idGame
AND g.idGame = e.fkGame
AND a.name LIKE '%$param%'
GROUP BY a.name
ORDER BY a.name;