动软可以说是一款很好的代码生成器软件,只要有数据库,那么除了U层以外的代码都可以生成了,自动生成三层架构的完整项目和代码。
动软可以生成基于面向对象的思想和三层架构设计的代码,结合了软件开发中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。主要是现在对应数据库中表的积累代码的自动生成。
主要的功能:
1、自动生成代码。生成代码的同时,各层的引用关系也就做好了。各层,所有能想到的方法都有了,很全。
2、生成存储过程和脚本
3、生成数据库结构文档
4、多类型数据库管理器
5、查询分析器
6、插件
这样动软就帮我们把一些重复性的东西做好了,我们不用再写一些重复性的代码而浪费时间了。
以前我们的认识是类似存储过程的就会防止Sql注入,虽然不是绝对的,但是防御能力也比较强吧。
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
动软拥有这么多功能,很方便,那么它是完美的吗?动软生成器生成的D层的代码都是拼接的字符串strWhere,这样很容易造成Sql注入,有人很轻易的就可以击破我们的系统。
为了防止SQL注入我们只需要加入几行代码就可以了,这几行代码可以将非法字符过滤掉:
/// <summary> /// 过滤 Sql 语句字符串中的注入脚本 /// </summary> /// <param name="source"> 传入的字符串 </param> /// <returns> 过 滤后的字符串 </returns> public static string SqlFilter(string source) { // 单引号替换成两个单引号 source = source.Replace(" ' ", " '' "); // 半角封号替换为全角封号,防止多语句执行 source = source.Replace(";", ""); // 半角括号替换为全角括号 source = source.Replace(" ( ", " ( "); source = source.Replace(" ) ", " ) "); // 要用正则表达式替换,防止字母大小写得情况 // 去除执行存储过程的命令关键字 source = source.Replace(" Exec ", ""); source = source.Replace(" Execute ", ""); source = source.Replace(" Create ", ""); source = source.Replace(" Drop ", ""); // 去除系统存储过程或扩展存储过程关键字 source = source.Replace(" xp_ ", " x p_ "); source = source.Replace(" sp_ ", " s p_ "); // 防止16进制注入 source = source.Replace(" 0x ", " 0 x "); return source; }
对数据库来说是非法的字符对于业务来说很可能是合法的。所以过滤非法字符还需要跟业务相结合,谨慎使用。
比如像淘宝那样大型网站做的就非常坚固,双十一,十二的时候购物的人那么多也没有什么异常,希望自己哪天也能做出那么强大的网站,那么强大的框架,学习之中……