我目前正在为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;
答案 0 :(得分:2)
除了使用real_escape_string
函数(使用mysqli或PDO),我还会更改FTP密码和数据库用户和密码。
答案 1 :(得分:0)
你输入白名单让我们说如果只允许字符串使用is_string()来验证它。
答案 2 :(得分:-1)
使用PDO和parameterized queries。通过连接输入停止创建查询。
并停止使用mysql_ *函数集。马上。每当你在php源文件中输入它时,$ deity会杀死一只小猫。请停止这次屠杀。