避免在gridview中的复选框上进行sql注入

时间:2012-12-10 04:04:39

标签: sql-injection

<asp:CheckBox ID="chkIsHidden" runat="server" Enabled="false" 
    Checked='<%# Convert.IsDBNull(Eval("Is_Hidden")) ? false : Convert.ToBoolean(Eval("Is_Hidden")) %>' 
/>

上面的代码,安全程序扫描并警告“盲目SQL注入”,我很困惑

  1. 为什么要注入SQL?
  2. 如何修复以避免sql注入?

1 个答案:

答案 0 :(得分:1)

正如您所看到的,即使您的Web应用程序未返回错误消息,它仍可能容易受到盲注SQL攻击。但是,您可以使用以下最佳实践保护组织的应用程序免受攻击:

  1. 创建一个强制执行安全编码实践的策略,以确保在任何应用程序开发或部署期间执行漏洞检测和评估。

  2. 让您的开发人员确定数据进入或退出应用程序的位置,并确保在将HTTP请求的每个部分放在脚本,数据访问例程和SQL查询附近之前进行验证。这将阻止用户提供的数据能够修改SQL语句的语法。

  3. 使用存储过程将Web应用程序与SQL完全隔离,应用程序应使用安全接口执行该过程,例如JDBC的CallableStatement或ADO的Command Object。如果必须动态生成SQL语句,请使用PreparedStatements,因为PreparedStatements和存储过程都会在添加用户输入之前编译SQL语句,这使得用户输入无法修改实际的SQL语句。

  4. 考虑使用漏洞评估工具自动发现SQL注入和其他安全漏洞。

  5. 制定事件响应计划。制定详细且经过良好排练的计划将有助于您处理以有序和有效方式发生的任何攻击,并最大限度地减少对组织的影响。