Аутентификация файла XML - PullRequest
1 голос
/ 26 января 2009

Я нахожусь в ситуации, когда мое приложение должно прочитать файл XML, который другое приложение поместит в определенное место в файловой системе (на нескольких платформах). Я контролирую содержание этого документа. Другое приложение просто предоставляет транспорт.

Я бы хотел убедиться, что документ не был изменен при транспортировке или каким-либо образом подделан. В настоящее время мы просто записываем соленый хеш строки документа в начало файла перед самим XML-документом. Когда мы анализируем документ, мы просто удаляем хеш, сравниваем его с хешем оставшейся части документа, а затем отправляем анализатору.

Есть ли у кого-нибудь опыт такого сценария, которым он хотел бы поделиться? Есть какие-то недостатки или более простые способы, по которым я скучаю?

Ответы [ 5 ]

3 голосов
/ 26 января 2009

Существует стандарт для подписи XML-документов: http://www.w3.org/TR/xmldsig-core/

Если вы не хотите реализовывать все самостоятельно, я предлагаю вам использовать библиотеку безопасности XML .

0 голосов
/ 26 января 2009

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

0 голосов
/ 26 января 2009

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

0 голосов
/ 26 января 2009

Вы должны подписать сообщение, зашифровав соленый хеш с помощью асимметричного алгоритма шифрования, и отправить его вместе с документом. Простое использование хеша не обеспечивает безопасности, так как некоторые злоумышленники могут сгенерировать другое сообщение с тем же хешем.

0 голосов
/ 26 января 2009

Мы зашифровываем весь XML-файл и расшифровываем его для использования. Таким образом, мы точно знаем, был ли он изменен;)

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