SQL Параметризованный запрос и Mark вопроса
]]]При поиске документов SQL вы можете встретить знак вопроса (?) В своем запросе. Эти заполнители представляют параметризованные запросы и широко используются для выполнения динамического SQL в программах.
]параметризованный запрос имеет много преимуществ. Они упрощают код, отделяя значения параметров от самого запроса, делая его более эффективным и гибким. Кроме того, они повышают безопасность за счет предотвращения атак SQL -инъекций.
]] Например, в примере псевдокода:
]ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = 7")
result = cmd.Execute()
]
может быть переписано как:
]ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = ?")
cmd.Parameters.Add(7)
result = cmd.Execute()
]
Этот метод обеспечивает правильную строку, устранение риска инъекции SQL. Рассмотрим следующий сценарий:
]string s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE (name = '" s "')"
cmd.Execute()
]
, если пользователь входит в строку Robert '); Однако используйте параметризованный запрос:
s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE name = ?"
cmd.Parameters.Add(s)
cmd.Execute()
]
Библиотечные функции очищают вход, чтобы предотвратить выполнение вредоносного кода.
]или, Microsoft SQL Server использует именованные параметры, которые улучшают читабельность и ясность:
cmd.Text = "SELECT thingA FROM tableA WHERE thingB = @varname"
cmd.Parameters.AddWithValue("@varname", 7)
result = cmd.Execute()
] Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3