1,功能单一型
解释:比如一个软件是由
界面部分 User Interface+ 代码逻辑 Business Logic Layer+ 数据库部分 Data Access Layer
组成。
但是为什么一个常见的软件要搞得这么复杂?为什么不能把以上三种融为一体。这样不就避免了
【中间件】的学习成本了?
但是界面有winform html 这种标准极致的,和用户交互的;代码逻辑有许多编程语言来实现对数据完整性的约束;
数据库可以连接界面与数据。
而这些东西都在特定的方面做到极致,都有专注自己擅长的领域。它们组合起来就得到了完美的软件。即功能单一性。

大型企业组织结构的管理模式的优点:容错率高,可替换性强,上限高。
缺点:不灵活,效率低,速度慢。小型企业反之。

它借鉴企业组织结构的管理模式,实现的一种多人团队协作开发模式。

而多层结构与软件的组成结构有很多相似点。每个部分做好每个部分的事情,相互联系,一个地方出错,可以精确定位到
bug的地方,里面很多伪方法,各司其责,互不干扰,实现功能。

一个解决方案里添加了多个项目,而每个项目就做各自的事情,每个项目互相引用通过伪方法各自传值,进行数据的交流。

比如登录
1,界面 UI 2,判断账号密码 BLL 3,匹配数据库里的账号密码 DAL
UI界面需要用窗体,获得值就行了,再传给BLL层。
BLL层进行非空判断,再通过伪方法给 DAL层
DAL层进行匹配,得到返回数据,给UI层。

引用UI引用BLL,BLL引用DAL,DAL再引用ado.net 的类库。


```csharp
//下面是sql注入的一种,这种sql写法是有问题的,可以破解登录。
select count(*) from admin where id = '' and pwd = '     ' or '1' = '1    'public class DBHelper1{public static object GetData(string sql,SqlParameter[] paras){string address = "Data Source = .; Initial Catalog = MySchool; Integrated Security = True";using (SqlConnection con = new SqlConnection(address)){SqlCommand cmd = new SqlCommand(sql,con);con.Open();//参数化技术,取代字符串拼接cmd.Parameters.AddRange(paras);return cmd.ExecuteScalar();}}}private void button2_Click(object sender, EventArgs e){string sql = "select * from admin where loginid = @id and loginpwd = @pwd";SqlParameter[] paras = new SqlParameter[] {new SqlParameter("@id",textBox1.Text),new SqlParameter ("@pwd",textBox2.Text)};int i = Convert.ToInt32(DBHelper1.GetData(sql, paras));if (i > 0)MessageBox.Show("验证成功,不会遭到sql注入!");}
//缺点是不能看到 参数 要再数据库 sql server profiler看

其它层,帮助层,暂时叫实体层。ENTITY
对其它三层起辅助作用的层。
比如设计一个方法,如果参数很多,就很复杂,但是把这些参数,放到一个类,把这个类放入实体层。
这时参数就是一个object 的类了,返回值可以是泛型集合。
这样,提高了代码的复用率了。

写在最后:

用多层结构开发软件的详细步骤
1,对数据表进行需求分析,各种业务,想象功能点
2,搭建基本多层结构,正确的让其相互应用
3,针对你的需求分析,设计伪方法
4,实现伪方法和功能

通用的规范标准是十分重要的。
1,一个数据表必须在实体层中存在一个实体类用于对其它层作辅助,传值的载体
2,这个类中有按要求的属性,字段,构造
3,每个层的命名规范 表名-DAL 表名-BLL
4,一个类必须至少5个方法 Get() Get(string id) Update() Add() Delete()
其它的方法灵活变通。

.net多层结构 sql注入相关推荐

  1. php mysql 防 sql注入_php 防sql注入方法

    php防sql注入的方法:1.使用mysql_real_escape_string方法转义SQL语句中使用的字符串中的特殊字符:2.打开magic_quotes_gpc来防止SQL注入:3.通过自定义 ...

  2. resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查 ...

  3. mybaits的模糊查询_mybatis模糊查询防止SQL注入(很详细)

    SQL注入,大家都不陌生,是一种常见的攻击方式.攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如"or '1'='1'"这样的语句),有可能入侵参数检验不足的应用程序 ...

  4. SQL注入漏洞全接触--入门篇

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  5. Sql注入和Html注入

    举例说,有一间公司的网页服务器上有一个留言板的代码,用来让用户发表简短的口信,例如: hello word!!!! 不过,这个代码原来有漏洞.一个意图入侵者得悉这间公司采用了有问题的代码,于是试图通过 ...

  6. mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...

    本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: se ...

  7. 【数据库】 兴唐第二十七节课只sql注入

    首先来一个用户登录程序 public static void login(String username, String password) {Connection conn = null;State ...

  8. 雷林鹏分享:MySQL 及 SQL 注入

    MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入 ...

  9. WEB攻击手段及防御第2篇-SQL注入

    概念 SQL注入即通过WEB表单域插入非法SQL命令,当服务器端构造SQL时采用拼接形式,非法SQL与正常SQL一并构造并在数据库中执行. 简单的SQL注入的例子: 例1:test123456 or ...

最新文章

  1. 【深度学习】(1) 前向传播,附python完整代码
  2. python excle写数据
  3. Android各大热补丁方案分析和比较
  4. android wear换表盘,Ticwear系统使用watchmaker更换表盘教程
  5. 在區塊鏈上建立可更新的智慧合約(二)
  6. JDK7和JDK9流中异常的处理
  7. Java DataOutputStream size()方法及示例
  8. Java并发——线程中断学习
  9. SQL Server 2012新增的内置函数尝试
  10. github创建远程仓库
  11. PMP项目管理学习心得分享
  12. 螺杆式、离心式、活塞式冷水机组及品牌
  13. yasm linux gcc,vs+msys2+yasm 编译libx264+ffmpeg详细解释(32位或64位)
  14. initialize
  15. vue使用 svg图片以及修改svg图片颜色
  16. 【论文阅读】Improving Table Structure Recognition with Visual-Alignment Sequential Coordinate Modeling
  17. Day 09 List子接口LinkedList
  18. 四路抢答器的PLC程序设计
  19. 修改植物大战僵尸的游戏数据
  20. QLocale::Language相关枚举结果

热门文章

  1. 前端学习(547):node的系统模块fs
  2. html:(11):address和code标签
  3. 实例54:python
  4. 在本地实现完成多台服务器之间文件拷贝
  5. 纯CSS实现锚点跳转位置上下偏移的办法
  6. P1078 文化之旅[最短路]
  7. AngularJs自学心得
  8. 白话经典算法系列之一 冒泡排序的三种实现
  9. hasLayout和filter滤镜的细节
  10. java 创建线程的三种方法_java 创建线程的几种方式