SQL-инъекция основана на неэкранированных строках, используемых при генерации необработанной SQL-строки.
Например,
"SELECT * FROM `user` WHERE `name` = '" . $name . "'"
уязвимо, поскольку значение $name
может содержать знак 'итаким образом измените значение оператора sql.хороший пример - если $ name ' OR 1=1; --
, следовательно, делает этот SQL-запрос:
"SELECT * FROM `user` WHERE `name` = '' OR 1=1; --'"
, что очень полезно для обхода проверки пароля, я могу вам сказать:)
правильный путьэто для экранирования «символа в» (для mysql).Вот почему такие языки, как php, предоставляют mysql_real_escape_string
.однако, если вы используете правильную параметризованную систему запросов, то вы можете пройти через все, что вам нравится, и библиотека будет корректно ее избегать.
Если вы посмотрите на ваш код, нет смысла проверять значение token
, если тольковаш UserService выполняет некоторую хитрую генерацию строки sql (и я уверен, что Entity Framework не делает этого, так что у вас все должно быть в порядке)