- Learn T-SQL Querying
- Pedro Lopes Pam Lahoud
- 318字
- 2021-06-24 14:38:14
Security
One reason to use parameterized queries is for security. Using a properly formatted parameterized query can protect against SQL injection attacks. A SQL injection attack is where a malicious user can execute database code (in this case, T-SQL) on a server by appending it to a data-entry field in the application. As an example, imagine we have an application that contains a form that asks the user to enter their name into a text box. If the application were to use an ad hoc statement to insert this data into the database, it would generally concatenate a T-SQL string with the user input, as in the following code:
DECLARE @sql nvarchar(MAX);
SET @sql = N'INSERT Users (Name) VALUES (''' + <user input> + ''');';
EXECUTE (@sql);
A malicious user might enter the Bob'); DROP TABLE Users; -- value into the text box.
If this is the case, the actual code that gets sent to SQL Server would look like the following:
INSERT Users (Name) VALUES ('Bob'); DROP TABLE Users; --');
This is valid T-SQL syntax that would successfully execute. It would first insert a row into the Users table with the Name column set to 'Bob', then it would drop the Users table. This would of course break the application, and unless there was some sort of auditing in place, we would never know what happened.
Let's look at this example again using a parameterized query. The code might look like the following:
EXECUTE sp_executesql @stmt = N'INSERT Users (Name) VALUES (@name)', @params = N'@name nvarchar(100)', @name = <user input>
This time, if the user were to send the same input, rather than executing the query that the user embedded in the string, the SQL Server will insert a row into the Users table, with the Name column set to ('Bob'); DROP TABLE Users; --'. This would obviously look a bit strange, but it wouldn't break the application or breach security.
- MCSA Windows Server 2016 Certification Guide:Exam 70-741
- 機艙監測與主機遙控
- 樂高創意機器人教程(中級 下冊 10~16歲) (青少年iCAN+創新創意實踐指導叢書)
- Multimedia Programming with Pure Data
- 計算機網絡原理與技術
- 高維聚類知識發現關鍵技術研究及應用
- DevOps Bootcamp
- FPGA/CPLD應用技術(Verilog語言版)
- 從零開始學PHP
- 手把手教你學Photoshop CS3
- 實戰大數據(Hadoop+Spark+Flink):從平臺構建到交互式數據分析(離線/實時)
- 巧學活用AutoCAD
- 網絡設備規劃、配置與管理大全(Cisco版)
- SketchUp 2014 for Architectural Visualization(Second Edition)
- 深度學習實戰