Technicznie rzecz biorąc, nie jesteś narażony na ryzyko, jeśli nie przygotujesz danych, które nie pochodzą z danych wejściowych użytkownika. Zaleca się jednak to zrobić z kilku powodów:
- Jeśli zapomnisz gdzieś przygotować jakiekolwiek dane wejściowe użytkownika, istnieje szansa, że ten użytkownik wstrzyknął coś innego do wiersza danych, co do którego nigdy się nie spodziewałeś.
- Dobrą praktyką jest powtarzanie tego, co robisz, aby zapewnić bezpieczeństwo serwera. Jeśli zaczniesz to mieszać, znacznie bardziej prawdopodobne jest, że zapomnisz o przygotowywaniu danych tam, gdzie jest to rzeczywiście potrzebne.
- Przygotowywanie danych to nie tylko zapobieganie wstrzykiwaniu kodu SQL przez atakujących. Zapobiegnie to również niektórym problemom z bazą danych w przypadku, gdy przypadkowo utworzysz błąd w swoim kodzie. Na przykład:
Gdzieś w swoim kodzie masz system dzienników, który dodaje dziennik błędów do bazy danych. Ciąg będzie wyglądał następująco:
Ten ciąg jest generowany przez Twój skrypt. Dlatego nie przygotowujesz tego. Jednak cudzysłowy wewnątrz tego ciągu spowodują błędy w Twojej bazie danych, którym można by zapobiec, gdyby i tak ją przygotowałeś.