Высокая оценка информации с HTML и PHP

0

В настоящее время у меня есть JS-игра, размещенная на моем сайте. Я хочу иметь форму HTML, которая получает имя пользователя и отправляет его на сервер (сохраняется только в текстовом файле). На данный момент я могу использовать PHP, чтобы сайт/игра /scores.php? Action = submit & name = "Player Name" & score = "Player Score". Я довольно уверен, что это сработает. Тем не менее, любой, кто мог бы читать мой HTML, мог просто передать поддельную оценку этой функции.

Как мне подойти к этой проблеме безопасности?

Примечание. Я знаю, что SQL, вероятно, будет работать лучше для этой ситуации, но мне еще не интересно изучать mySQL!

Заранее спасибо.

EDIT: Теперь у меня другая проблема. PHP не получает параметры POST из формы. Код ниже:

JS:

var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "http://michaelman.net/snake/scores.php");

var dataField = document.createElement("input");
dataField.setAttribute("type", "hidden");
dataField.setAttribute("name", name);
dataField.setAttribute("value", score);

form.appendChild(dataField);
document.body.appendChild(form);
form.submit();

PHP:

switch($_SERVER['REQUEST_METHOD']){
case 'GET': $the_request = &$_GET; echo "GTFO!";
case 'POST': $the_request = &$_POST; writeToFile($_POST['name'], $_POST['value']);
echo ("Saved: " . $_POST['name'] . " - " . $_POST['value']);
}

Хотя сервер распознает запрос, он не может получить ни один из параметров. Почему это? Благодарю.

EDIT 2: Извините за немое редактирование. Я понял это, создав два отдельных поля формы, один для имени, а другой для оценки. В PHP-коде я просто извлекаю параметры "имя" и "оценка".

  • 0
    Если METHOD="POST" вместо GET он не будет отображаться в URL. Смотрите ссылку здесь
Теги:

3 ответа

1

Если вы используете METHOD="GET" он будет отображаться в URL-адресе и будет кошмаром безопасности, но если вы используете METHOD="POST" он не будет отображаться и более безопасен.

См. Ссылки здесь и здесь

1

Используйте тег формы следующим образом:

<form action="scores.php" method="post">

Затем все переменные, переданные в scores.php будут доступны следующим образом:

$name = $_POST['name']; 
$score = $_POST['score'];

и не будет отображаться в строке запроса URL.

0

Существует много способов защитить это приложение. Не зная характера вашей игры, трудно сказать точно, но во-первых, вы должны использовать метод POST вместо GET (таким образом, параметры url не будут читаемыми), это все еще не полностью безопасно, поскольку любой может по-прежнему ударить по этому сценарию с параметрами POST.

Я бы предложил иметь оценки, рассчитанные в самом PHP, в результате различных действий пользователя. EG в игре в шахматы, ваш бэкэнд должен знать, какие части есть где, если пользователь берет кусок, то бэкенд знает, делая передний конец довольно глупым и просто обновляя пользовательский интерфейс, чтобы отразить бэкэнд.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню