SQL Injection:网络攻击及其防范措施(5)
发布时间:2012-01-04 12:21
作者:中国信息安全博士网
来源:IT168
点击:加载中...次
string queryString = Request.QueryString["jobId"];
if (!string.IsNullOrEmpty(queryString))
if (!DetectSqlInjection(queryString) && !DetectSqlInjection(queryString))
// Gets data from database.
gdvData.DataSource = GetData(queryString.Trim());
// Binds data to gridview.
gdvData.DataBind();
else
throw new Exception("Please enter correct field");
当我们再次执行以下URL时,被嵌入的恶意语句被校验出来了,从而在一定程度上防止了SQL Injection。
http://localhost:3452/ExcelUsingXSLT/Default.aspx?jobid=1"or"1"="1
但使用正则表达式只能防范一些常见或已知SQL Injection方式,而且每当发现有新的攻击方式时,都要对正则表达式进行修改,这可是吃力不讨好的工作。
通过参数化存储过程进行数据查询存取
首先我们定义一个存储过程根据jobId来查找jobs表中的数据。
=============================================
Author: JKhuang
Create date: 12/31/2011
Description: Get data from jobs table by specified jobId.
=============================================
ALTER PROCEDURE [dbo].[GetJobs]
ensure that the id type is int
@jobId INT
AS
BEGIN
SET NOCOUNT ON;
SELECT job_id, job_desc, min_lvl, max_lvl
FROM dbo.jobs
WHERE job_id = @jobId
GRANT EXECUTE ON GetJobs TO pubs
(责任编辑:)