我目前正在为一个数据库课程项目开发一个PHP/HTML的web界面。
基本上,有一个输入字段:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
这允许一个人在我的数据库中搜索东西。
昨天晚上,在上传了我的新index.php后,我刷新了页面,发现(我以为是)某种注入,因为我的页面充满了垃圾邮件("YO 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;发布于 2013-05-29 23:29:59
除了使用real_escape_string函数(使用mysqli或PDO)外,我还会更改FTP密码和数据库用户和密码。
发布于 2013-05-30 00:01:42
你输入的白名单,让我们说如果只允许字符串,使用is_string()验证。
发布于 2013-05-29 23:24:38
使用PDO和parameterized queries。通过连接输入来停止创建查询。
并停止使用mysql_*函数集。现在就来。每次你在php源文件中输入它,$deity就会杀死一只小猫。请停止这场屠杀。
https://stackoverflow.com/questions/16817530
复制相似问题