0

現在、データベース コース プロジェクト用に 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;
4

3 に答える 3