Будет использование LINQ к справке SQL предотвращать Внедрение SQL

Решение 1: O(n) время & amp; O(n) пробел

Псевдокод

  1. Инициализация хеш-таблицы с предварительно вычисленными значениями : для каждого элемента [112 ], сохранить в хеш-таблице x^4
  2. Поиск пар : Для каждого элемента x проверьте, есть ли val-x^4 в хеш-таблице

[ 1144] Если шаг 2 находит совпадение, то существует пара, которая удовлетворяет требованию.

Сложность

Сложность составляет O(n) для построения хэш-таблицы и O(n) для сканирования. Кроме того, требуется дополнительное пространство O(n).

Реализация

Для реализации c можно использовать unordered_set .

  • Для простоты предполагается, что все значения являются уникальными. Если это не гарантировано, требуется подсчет значений (чтобы избежать x^4+x^4=val, где x появляется только один раз на входе).

Решение 2: O(n*log(n)) время & amp; O(1) пробел

Псевдокод

  1. Сортировать все входные значения на месте : отсортировать значения массива в в порядке возрастания
  2. Поиск пар : для каждого x двоичный поиск по sqrt(val-x^4)

Если шаг 2 находит совпадение, то существует пара, удовлетворяющая требованию.

Сложность

Сложность сортировки составляет O(n*log(n)). Каждый двоичный поиск требует O(log(n)) времени и выполняется n раз. Следовательно, общая временная сложность составляет O(n*log(n))

Реализация

Для реализации c можно использовать qsort . [+1155]

50
задан John Saunders 3 July 2013 в 09:32
поделиться

3 ответа

Да, LINQ поможет остановить Внедрение SQL.

LINQ к SQL передает все данные базе данных через параметры SQL. Так, хотя SQL-запрос составлен динамично, значения являются substitued стороной сервера через параметры, охраняющие против наиболее распространенной причины атак с использованием кода на SQL.

кроме того, см. , Устраняют Атаки с использованием кода на SQL Безболезненно с LINQ для некоторой информации

73
ответ дан Galwegian 7 November 2019 в 10:55
поделиться

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

Использование свойство Log для проверки, что происходит: dc.Log = Console.Out;

14
ответ дан Amy B 7 November 2019 в 10:55
поделиться

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

3
ответ дан Jan Bannister 7 November 2019 в 10:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: