Нет, вы не будете в полной безопасности. Как уже упоминали другие, параметризованные запросы - это всегда путь, независимо от того, как вы обращаетесь к базе данных.
Это небольшая городская легенда, что с проками вы в безопасности. Я думаю, что причина, по которой люди находятся в этом заблуждении, заключается в том, что большинство людей предполагают, что вы будете вызывать прок с параметризованными запросами из вашего кода. Но если вы этого не сделаете, например, если вы сделаете что-то похожее на приведенное ниже, вы будете широко открыты:
SqlCommand cmd = new SqlCommand("exec @myProc " + paramValue, con);
cmd.ExecuteNonQuery();
Потому что вы используете нефильтрованный контент от конечного пользователя. Еще раз, все, что им нужно сделать, это завершить строку (";"), добавить свои опасные команды и бум - вы попали.
(Кроме того, если вы находитесь в Интернете, не извлекайте нефильтрованный мусор из строки запроса браузера - это делает абсурдно легким делать очень плохие вещи с вашими данными.)
Если вы параметризуете запросы, вы будете в лучшей форме. Однако, как уже упоминали другие, если ваш процесс все еще генерирует динамический SQL и выполняет его, могут быть проблемы.
Должен заметить, что я не антипрок. Procs может быть очень полезен для решения определенных проблем с доступом к данным. Но процы не - это «серебряная пуля» для инъекций SQL.