Безопасность сервера для лицензионного приложения - PullRequest
1 голос
/ 03 ноября 2010

Предостережение: я почти ничего не знаю о безопасности сервера, поэтому ничего не думаю:)

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

Проще говоря, приложение связывается с нашим сервером, используя cURL, и публикует около 20 различных полей на нашей странице.Значения этих полей берутся из текстового ввода и текстовых полей, определенно будут иметь html и некоторый javascript в теме, и в настоящее время мы вообще не делаем для них очистку данных, разбор тегов и т. Д.Мы просто берем эти данные, немного их анализируем и снова отображаем их пользователю в несколько ином формате - в основном выводим те же данные в слегка измененном виде прямо на их экран.

Единственное взаимодействие с базой данных, которое происходит, заключается в том, что одним из полей является их лицензионный ключ.Это вводится в подготовленный оператор MYSQL для проверки пользователя.

Правильно ли я считаю, что нашей единственной уязвимостью является лицензионный ключ, поскольку он является единственной точкой взаимодействия с БД, и что мы должны уже покрыть это подготовленным утверждением?

IЯ предполагаю, что не должно быть никаких угроз безопасности для нашего сервера при получении данных пользователя, их частичном анализе и последующем возвращении к ним, поскольку это не требует взаимодействия с БД.Если это неверное предположение, пожалуйста, объясните мне, почему и какие шаги я должен предпринять, чтобы лучше защитить нашу систему.

1 Ответ

3 голосов
/ 03 ноября 2010

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

if(preg_match('/^[a-z0-9]$/', $license)) {
   // Ok to proceed with database interaction...
} else {
   die('NO USAGE FOR YOU!');
}

Убедитесь, что вы неиспользуя eval () или `` (<= это обратные тики) с входящими значениями. </p>

Обязательно определите все свои переменные, прежде чем использовать их.Ниже приведен пример того, что не следует делать ...

if($_POST['password'] == $password) {
    $is_authenticated = true;
}

if($is_authenticated) {
    // ... code ...
}

Вы можете подумать, что единственный способ запустить ... код ... - это получить доступ к этому сценарию для того, чтобы пользовательправильный парольНа самом деле, если на сервере активирован register_globals, они могут просто передать значение get key =>, например .php?is_authenticated=1, в сценарий запроса.

Это правильный (предварительно заданная переменная) способ использования переменной.

$is_authenticated = false;
if($_POST['password'] == $password) {
    $is_authenticated = true;
}

if($is_authenticated) {
    // ... code ...
}

Вам также необходимо изучить возможность атаки XSS, но это больше основано на контексте, в котором вы возвращаете эти данные.Это также отображается на вашем сайте?Это просто вернулось к клиенту?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...