2013-05-29 2 views
0

В настоящее время я разрабатываю веб-интерфейс в PHP/HTML для проекта курса базы данных.PHP: сайт, получивший взломанный странно

В принципе, есть поле ввода:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

, что позволяет искать вещи в моей БД.

Вчера вечером, после загрузки моего нового index.php, я обновил страницу и был (был ли я, хотя это был) какой-то Инъекция, потому что моя страница была полностью заполнена спамом («YO MAMAYO MAMAYO MAMA и т. Д.»,).

Я получил форму, используя функцию «htmlspecialchars()» php. И еще раз, я только что загрузил новый index.php всего 10 минут назад, и страница была заполнена «YO MAMA» сразу после того, как я обновился.

У кого-нибудь есть идея? И как я могу проверить/защитить свою страницу?

Благодаря

EDIT: Код формы заключается в следующем:

<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

Используйте PDO и parameterized queries. Прекратите создание запросов путем объединения ввода.

И прекратите использование набора функций mysql_ *. Прямо сейчас. Каждый раз, когда вы вводите его в исходный файл php, $ божество убивает котенка. Остановите эту убою, пожалуйста.

2

В дополнение к использованию функции real_escape_string (с mysqli или PDO), я бы изменил пароль FTP И пользователя базы данных и пароль.

0

Белый список, который вы вводите, позволяет говорить, если разрешено использовать только строку is_string(), чтобы проверить его.

+0

пытается использовать htmlpurifier для проверки ввода пользователя. – Originative

Смежные вопросы