我目前正在为一个数据库课程项目开发一个PHP/HTML网页界面。PHP:奇怪的网站遭到黑客入侵
基本上,有一个输入字段:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
,允许一个来搜索我的数据库的东西。
昨天晚上,我上传了新的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;
尝试使用htmlpurifier验证用户输入。 – Originative