我是一个菜鸟,我只是在努力,2021正视自己,面对2021!

ASP.NET 高级编程基础第六篇—开发原则1

前言: 从这篇我们开始学习web开发原则,所谓没有规矩,不成方圆,在我们编程这个领域也是一模一样的,我们需要对我们的编程设计很多规则,当然这些规则都是你经过了这么多年提炼出来的我们必须注意的事项,如果我们不注意的话我们的网站将会遇到很大的漏洞,下面我就开始说一下Web开发中的一些基本原则。

  1. Web开发的一些基本原则

(1) 最小权限原则,只允许用户做什么,而不是”不允许用户做什么”。

(2) 浏览器查看的是服务端代码的执行输出文本,除非服务器有漏洞,否则浏览者无法查看服务端的aspx.cs代码,目标另存为也是保存的aspx的执行结果,而看不到aspx.cs的源代码,js,html是被输出到浏览器上执行的,因此无法禁止浏览器查看查看JS,Html。

(3) C#代码是运行在服务器端的,JS代码是运行在浏览器客户端的。

(4) 能在浏览器端完成的事情,就不要到服务端去完成。

(5) 客户端是不可信的。

  1. 原则1

(1) C#代码是运行在服务器端的,JS代码是运行在浏览器客户端的。

(2) 按钮确认提交的实现在Button控件的onclick中写入如下代码:

 1) <input type=”submit” name=”delete” value=”删除” onclick=”return confirm(‘真的要删除吗?’)” />

 2) 代码是运行在浏览器端的,和服务器端没有关系。

(3) 在服务端”弹出消息窗口”

 1) response.write(”<script type=’text/javascript’>alert(“删除成功!”)</script>”);

 2) 并不是真的是在服务器端运行的,只是生成了JavaScript代码到浏览器端,浏览器会在解析文档的时候运行alert,不推荐用这种写法,读懂即可,推荐用后面讲的RegisterClient.startupScript。只是渲染到浏览器端,所以并不会得到对话框关闭服务端的代码才会执行下去。

 3) 对于服务器端的代码来说,生成一堆HTML代码就是一堆字符串,没有任何意义,只有到了浏览器端执行才会有意义。

(4) 案例1:在项目中添加对System.Windows.Forms的引用,然后MessageBox.Show(“Hello”);用Cassini.Dev.exe启动测试程序让别人的电脑远程测试,证明c#代码是运行在服务器端的。

注:在Web窗体上面拖放一个控件,引入命名空间,将控件起名为MessageBox.Show(),双击此控件在其事件下面写入如下代码:

MessageBox.Show("我是服务器上面的");

(5) 127.0.0.1是回环地址(LoopBack),就是表示通过回环地址访问本机,哪怕是本机外网地址也访问不了,localhost就是127.0.0.1的别名,是无法在外部访问的。

(6)0.0.0.0任意IP(Any IP),不用写死绑定的IP了,通过任何一个网卡都可以访问网络程序。

(7) 案例2:用asp.net,可以再访问者磁盘中创建木马文件,在木马文件中写入让别人关机的文件,这样的话当别人单击的时候就会强制关机啦,嘿嘿,代码写法如下:Fille.WriteAllText("c:/muma.exe", "我是木马,我要你关机,你马上关机");用CassiniDev.exe启动测试程序让别人远程测试(VS内置的服务器不能远程测试),exe生成到了服务器的磁盘中,而不是访问者的磁盘中,因为C#代码是运行在服务器端的,而不是浏览器中的,浏览器得到的只有返回HTML的内容。

(8) 案例3.两个人分别访问点击自增1的界面,互不影响,因为不同用户的变量内容是隔离的。

 1) 拖放一个Button和Label控件,双击Button控件,写入如下代码:

 1     protected void Button1_Click(object sender, EventArgs e)
 2 
 3     {
 4 
 5         int i = Convert.ToInt32(Label1.Text);
 6 
 7         i++;
 8 
 9         Label1.Text = i.ToString();
10 
11     }

 

  1. 原则2

(1) 能在浏览器端完成的事情我们就不要去服务器端完成。

(2) 按钮隐藏一个控件就不要再服务端写代码,在客户端用JavaScript,dom来操作就可以,比如要操作数据库,显然是在浏览器端做不到的,这时候就要写服务端代码,校验用户名,密码这样的操作可以放在浏览器端(用户名密码都是写死的),技术上可以,但是这样安全性较差,因此必须放到服务器端。

(3) 拖放一个Button和TextBox控件,设置Button控件为隐藏

1 TextBox1.Visible = false;
2 
3 <input type="button" value="客户端隐藏" OnClick="document.getElementById('TextBox1').style.display='none'" />

 

注释:开发原则1我们就说到这里了,下节博客是web开发原则2,希望我们共同来学习,我们的群号是:159227188,欢迎大家在这里交流。

posted @ 2012-08-12 19:39  Kencery  阅读(2551)  评论(3编辑  收藏  举报
友情链接:初心商城