存储过程之外:SQL注入深入防御

日期:2007年9月18日 作者: 查看:[大字体 中字体 小字体]

一个更加彻底的深入防御策略是使用一个允许输入联合模式(也被认为是“优选名单”)和拒绝输入模式(或者称为”黑名单”)。用户的输入必须匹配优选名单模式(或者说至少一个优选名单模式,如果不多于一个的话)而且不和黑名单模式匹配(或者说任何黑名单模式)。如果在你的允许输入表中允许类似省略号这样的非字符输入,在深度防御策略中,你应该明确的使用黑名单模式。

// We allow alpha characters, spaces, and apostrophes as input
Regex allowRegex = new Regex(@“^[a-zA-Z\s\’]*$”);
// But we disallow common SQL functions
Regex disallowRegex = new Regex(“(unionselectdropdelete)”);
if ((!allowRegex.IsMatch(textBoxLastName.Text))  (disallowRegex.IsMatch(textBoxLastName.Text)))
{
                                labelErrorMessage.Text = “Invalid name.”;
return;
}

最后,我们必须论及加入损害控制到你的深入防御策略。如果一个黑客真的找到了一个对你的数据库执行SQL命令的途径,他可能会造成什么样的损害呢?如果你的应用程序作为一个管理员用户连接到数据库,象Microsoft SQL Server的”sa”用户,损害甚至会很严重。他不仅仅能看表中的数据,他也能增加他自己的新数据或者改变已经存在数据的值。设想一个在线购物站点,所有的商品项目价格标成低于一个美分。他能够增加新的用户或者删除已经存在用户。他能删除行,表或者甚至整个数据库。你能通过应用最少权限原则到你的深入防御策略减轻这个风险:使你的应用软件作为一个只有足够执行必需动作的许可,而没有其它更多的许可。如果你的应用程序只是从一个数据库中读数据,去掉数据库用户插入,更新和删除的许可。如果应用程序只需要对一个产品目录数据库进行存取(举例来说),确保用户不能存取定购历史数据库。永远不要指定”sa”或者任何管理员用户作为数据库用户。

  • 上一页 [1] [2] [3] 下一页 


  • 存储过程之外:SQL注入深入防御 相关文章:
  • ·存储过程之外:SQL注入深入防御
  • 存储过程之外:SQL注入深入防御 相关软件
  • 上一篇:菜鸟必看:常用命令详解之EXP、IMP

    下一篇:强烈推荐,MySQL服务维护笔记

  • 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
  • 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
  • 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
  • 精品推荐

    热点TOP10

    特别推荐