.net多层结构 sql注入
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注入相关推荐
- php mysql 防 sql注入_php 防sql注入方法
php防sql注入的方法:1.使用mysql_real_escape_string方法转义SQL语句中使用的字符串中的特殊字符:2.打开magic_quotes_gpc来防止SQL注入:3.通过自定义 ...
- resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查 ...
- mybaits的模糊查询_mybatis模糊查询防止SQL注入(很详细)
SQL注入,大家都不陌生,是一种常见的攻击方式.攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如"or '1'='1'"这样的语句),有可能入侵参数检验不足的应用程序 ...
- SQL注入漏洞全接触--入门篇
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...
- Sql注入和Html注入
举例说,有一间公司的网页服务器上有一个留言板的代码,用来让用户发表简短的口信,例如: hello word!!!! 不过,这个代码原来有漏洞.一个意图入侵者得悉这间公司采用了有问题的代码,于是试图通过 ...
- mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...
本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: se ...
- 【数据库】 兴唐第二十七节课只sql注入
首先来一个用户登录程序 public static void login(String username, String password) {Connection conn = null;State ...
- 雷林鹏分享:MySQL 及 SQL 注入
MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入 ...
- WEB攻击手段及防御第2篇-SQL注入
概念 SQL注入即通过WEB表单域插入非法SQL命令,当服务器端构造SQL时采用拼接形式,非法SQL与正常SQL一并构造并在数据库中执行. 简单的SQL注入的例子: 例1:test123456 or ...
最新文章
- 【深度学习】(1) 前向传播,附python完整代码
- python excle写数据
- Android各大热补丁方案分析和比较
- android wear换表盘,Ticwear系统使用watchmaker更换表盘教程
- 在區塊鏈上建立可更新的智慧合約(二)
- JDK7和JDK9流中异常的处理
- Java DataOutputStream size()方法及示例
- Java并发——线程中断学习
- SQL Server 2012新增的内置函数尝试
- github创建远程仓库
- PMP项目管理学习心得分享
- 螺杆式、离心式、活塞式冷水机组及品牌
- yasm linux gcc,vs+msys2+yasm 编译libx264+ffmpeg详细解释(32位或64位)
- initialize
- vue使用 svg图片以及修改svg图片颜色
- 【论文阅读】Improving Table Structure Recognition with Visual-Alignment Sequential Coordinate Modeling
- Day 09 List子接口LinkedList
- 四路抢答器的PLC程序设计
- 修改植物大战僵尸的游戏数据
- QLocale::Language相关枚举结果