动软可以说是一款很好的代码生成器软件,只要有数据库,那么除了U层以外的代码都可以生成了,自动生成三层架构的完整项目和代码。
1、动软介绍
动软可以生成基于面向对象的思想和三层架构设计的代码,结合了软件开发中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。主要是现在对应数据库中表的积累代码的自动生成。
主要的功能:
1、自动生成代码。生成代码的同时,各层的引用关系也就做好了。各层,所有能想到的方法都有了,很全。
2、生成存储过程和脚本
3、生成数据库结构文档
4、多类型数据库管理器
5、查询分析器
6、插件
这样动软就帮我们把一些重复性的东西做好了,我们不用再写一些重复性的代码而浪费时间了。
2、Sql注入
以前我们的认识是类似存储过程的就会防止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;
}
对数据库来说是非法的字符对于业务来说很可能是合法的。所以过滤非法字符还需要跟业务相结合,谨慎使用。
3、总结
比如像淘宝那样大型网站做的就非常坚固,双十一,十二的时候购物的人那么多也没有什么异常,希望自己哪天也能做出那么强大的网站,那么强大的框架,学习之中……