2013-05-29 59 views
0

我目前正在为一个数据库课程项目开发一个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; 

回答

-1

使用PDOparameterized queries。停止通过连接输入来创建查询。

并停止使用mysql_ *函数集。马上。每当你在一个php源文件中输入时,$神只会杀死一只小猫。请停止这场屠杀。

2

除了使用real_escape_string函数(与mysqli或PDO),我会更改FTP密码和数据库用户和密码。

0

白名单你输入让我们说,如果只允许字符串使用is_string()来验证它。

+0

尝试使用htmlpurifier验证用户输入。 – Originative

相关问题