2013-12-12 7 views
0

Наша компания имеет SOAP-Based WebService написанный на C# ASP.Net 4.Это хорошая практика, чтобы вернуть первоначальные запросы обратно в ответах

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

По пути я заметил, что он закодирован ответы включить оригинальные запросы, включая имя пользователя и пароль для доступа к услуге (которые являются первым 2 параметром для всех веб-методов, которые существуют в этом API)

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

Мне кажется, что проблема с безопасностью может случиться? Отправляют ли другие люди первоначальный запрос за вычетом информации о безопасности?

Примечание: Я знаю, что это наследие технологии, но, к сожалению, я не в состоянии переписать все это с нуля :-(

Спасибо, Гэри

.

Пример (Soap XML для краткости опускаем):

REQUEST: 
POST our-web-service/Products.asmx/Details 
username=TEST_USER&password=TEST_PASSWORD&productId=12345 

RESPONSE: 
<Response IsValid="True"> 
    <Product id="12345"> 
    <Name>Test Product 1</Name> 
    <Category>General</Category> 
    .... 
    </Product> 
    </Product> 

    <OriginalRequest> 
    <Username>TEST_USERNAME</Username> 
    <Password>TEST_PASSSWORD</Password> 
    <ProductId>12345</ProductId> 
    </OriginalRequest> 

</Response> 
+0

ИМХО это бесполезно и опасно – giammin

+0

Я бы видел только его использование в коде отладки, просто чтобы убедиться, что запрос интерпретируется так, как он должен был быть. Для производственного кода его действительно не должно быть. (Хотя, если его включение в ответ является угрозой безопасности, так оно и есть в запросе в первую очередь. Причина в этом пункте - безопасная ставка, что вы не используете SSL.: P Вы просто говорите клиент, что он уже знает ...) – cHao

+0

@cHao Спасибо за это, я просто хотел получить некоторые внешние мнения по этому поводу. И только FYI производственный API работает исключительно на https –

ответ

0

Мы не знаем вашего API funcionality. Итак, может быть случай, когда вашему приложению нужны исходные данные запроса для выполнения какого-либо процесса в среде без состояния. Я имею в виду, что отправитель или реквестер не хотят хранить сообщение с запросом до его обработки и возвращаться в ваш API.

Но выставление имени пользователя и пароля, как это, маловероятно.

Даже ваше производство работает на https, это не значит, что его нельзя подделать. Если вы используете (обмениваете) SSL-сертификаты как на стороне клиента, так и на сервере, это нормально. Существует еще одна опция в https на стороне сервера, «без аутентификации клиента». В этом типе транспорта самозаверяющий сертификат используется клиентом для отправки и получения HTTP-запроса и ответа. Это может быть подделано.

Поэтому убедитесь, что вы обмениваетесь сертификатом SSL. Если ваш клиент обеспокоен безопасностью.

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

Смежные вопросы