Делают ли асинхронные вызовы уязвимость безопасности - PullRequest
0 голосов
/ 16 февраля 2011

Просто прочитайте документ с требованиями.

Одним из требований является то, что не должно быть никаких асинхронных вызовов.Похоже, это требование безопасности.

Вопрос: каковы уязвимости безопасности при использовании асинхронных вызовов?Или какая-либо другая причина, чтобы запретить их?

Весь транспорт по протоколу Https / SSL.Звонки - это веб-сервисы между двумя системами.

Ответы [ 5 ]

4 голосов
/ 16 февраля 2011

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

2 голосов
/ 16 февраля 2011

При асинхронных вызовах сложнее поддерживать надлежащий контекст вызова, поскольку заключительная часть вызова обычно выполняется в произвольном потоке. Имитация, локальные объекты потока, настраиваемые во время выполнения (например, HttpContext.Current в ASP.Net) статические / локальные объекты потока должны быть правильно восстановлены перед запуском кода, который может на них полагаться.

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

Также, как и все остальные, написание асинхронного кода сложнее, чем синхронного. Есть библиотеки, которые помогают писать такой код - т.е. http://msdn.microsoft.com/en-us/magazine/cc546608.aspx

2 голосов
/ 16 февраля 2011

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

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

2 голосов
/ 16 февраля 2011

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

Кроме того, может оказаться невозможным написать программу на C #, которая не имеет асинхронных операций;Есть много таких операций, встроенных в среду выполнения.Например, сборка мусора и потоки, используемые средой выполнения для связи с различными уровнями ввода-вывода.Программирование пользовательского интерфейса, основанное на событиях, является многопоточным;«основной поток» вашей программы вызывается «потоком пользовательского интерфейса» среды выполнения всякий раз, когда пользователь что-то делает;в противном случае это просто ожидание.

2 голосов
/ 16 февраля 2011

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

Однако я бы подумал, что шансы на это были маловероятны.

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