Как санировать физический адрес (в узле ... для предотвращения взлома)? - PullRequest
0 голосов
/ 15 июля 2011

У меня есть приложение Node, которое собирает адрес пользователя и отправляет его в API Yahoo PlaceFinder (который возвращает геолокацию пользователя).

Пользователь должен заполнить поле «адрес» и нажать «Отправить».

Допустимо множество различных форматов адресов, таких как:

  • 90210 (просто почтовый индекс)
  • 123 поддельных улиц, Беверли-Хиллз, CA 90210
  • 123 поддельные улицы, 90210
  • ... и т. Д.

Меня не волнует, введет ли пользователь действительный адрес или нет.Я даже не хочу думать о том, что для этого понадобится RegEx.

Я обеспокоен безопасностью.

Какие шаги (если есть) я должен предпринять, чтобы санировать ввод пользователя передобрабатывает его с моим приложением Node - запрос http.get () к API поиска YahooPlace?

Ответы [ 2 ]

2 голосов
/ 17 июля 2011

Позвольте мне дать довольно прагматичный ответ, помимо обычного ответа «очистить ваши ненадежные данные от белого списка допустимых значений». Когда вы говорите «собирает адрес пользователя», вы на самом деле либо:

  1. Передача его в такое место, как база данных, где вас могут беспокоить атаки с использованием инъекций
  2. Отображение на страницу, где вы можете быть обеспокоены атакой XSS

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

1 голос
/ 15 июля 2011

Осмелюсь сказать, что самым простым способом было бы применить регулярное выражение к их вводу, разрешив только буквенно-цифровые символы, а также, возможно, запятую и точку. Я не уверен, что это позволит пропустить все действительные адреса, но если это не удастся, вы можете отобразить сообщение об ошибке «только использовать [A-z0-9,.]»

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

...