Как SqlCommand санирует параметры?

Я полагаю, что у вас есть ListView, определенный где-то в XML-файле, если да, вы можете добавить к нему немного padding, чтобы между краем экрана и ListView было некоторое пространство.

Пример:

<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"/>
10
задан John Saunders 22 December 2012 в 05:09
поделиться

1 ответ

Он защищает от внедрения SQL, а не XSS, и отсутствует код или функция , которая очищает данные параметров.

Защита достигается путем передачи значений параметров на сервер отдельно от строки запроса, так что значения равны никогда не подставлялся непосредственно в оператор sql.

Таким образом, вместо сервера sql запускается что-то вроде этого:

SELECT * FROM [table] WHERE [column] = ParameterValue

Это больше похоже на то, как если бы он работал примерно так:

DECLARE @ParamValue int
  -- //@ParamValue variable is populated from the framework in a safe way
SELECT * FROM [table] WHERE [column] = @ParamValue

Это быстрее, безопаснее и надежнее, чем функция, которая должна будет оценивать данные параметра. Такая функция должна быть очень сложной (читайте: подвержены ошибкам) ​​для обработки таких вещей, как пользовательские escape-символы и будущие улучшения.

Эта аккуратная сторона решает проблему: данные - это данные, код - это код, и они никогда не встретятся.


Ваш комментарий к другому, теперь удаленному, ответьте:

Если я передам значение O «Рурк, он кодирует это как О''Рурк, чтобы не нарушить запрос. Верный?

Нет, это не так. Переменная создается непосредственно из блока данных, поэтому никакого специального экранирования или кодирования не требуется.

Верный?

Нет, это не так. Переменная создается непосредственно из блока данных, поэтому никакого специального экранирования или кодирования не требуется.

Верный?

Нет, это не так. Переменная создается непосредственно из блока данных, поэтому никакого специального экранирования или кодирования не требуется.

24
ответ дан 3 December 2019 в 16:54
поделиться
Другие вопросы по тегам:

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