PHP:网站很奇怪

时间:2013-05-29 15:06:45

标签: php html security code-injection

我目前正在为PHP / HTML开发一个用于数据库课程项目的Web界面。

基本上,有一个输入字段:

<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;

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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

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