Как я могу предотвратить имена переменных формы от раскрытия структуры базы данных? - PullRequest
2 голосов
/ 30 сентября 2011

Я нахожусь на ранних этапах работы над веб-приложением, и я достиг точки, когда я хочу сделать лучший выбор в отношении конкретной проблемы безопасности.На данный момент все поля, найденные в формах HTML, названы в честь столбца базы данных, который они представляют.Так, например, если в базе данных у меня есть поле с именем «электронная почта», то поле формы также будет называться «электронная почта».Это упрощает обработку моего общего кода для форм, но я, естественно, вижу одну серьезную проблему с такими именами: Они могут дать потенциальным хакерам представление о том, как структурирована моя база данных, просто просмотрев источник.

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

  • Возможно, мне придется чаще использовать POST, поскольку зашифрованный текст может быть длиннее оригинала, что расширяет пределы GET, когда присутствует много полей и их данных.
  • Частые вызовы шифрования / дешифрования могут привести к проблемам с производительностью в будущем.Я еще не проверял это, так что это могло бы оказаться незначительным.
  • Не-AJAX GET не может использовать этот подход, не выглядя очень загадочно.

Итак, яинтересно, что вы, ребята, думаете об этом.Я слишком обдумываю это, или я на правильном пути?Есть ли лучший способ справиться с этим?

Кстати, я также знаю, что имя поля, такое как «электронная почта», не предлагает много информации разработчику (почему не txtEmail или что-то в этом роде?).Я смотрю, есть ли хорошее соглашение об именах, которое я могу принять, так как это может помочь с вышеупомянутой проблемой.

1 Ответ

7 голосов
/ 30 сентября 2011

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

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

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

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