1.最小权限原则,只允许用户做****,而不是"不允许用户做****"
2.浏览器查看的是服务端代码的执行输出的文本,除非服务器有漏洞,否则浏览者无法查看
服务端的ASPX,CS代码,目标另存为也是保存ASPX的执行结果,而看不到ASPX的源代码,
JS,HTML是被输出到浏览器上执行的,因此无法禁止浏览者查看JS,HTML
3.C#代码是运行在服务器端的,JS代码是运行在浏览器客户端的
4.能在浏览器端完成的事情,就不要到服务端去做
5.客户端是不可信的
6.能直接将生成的内容以流的形式输出给纵览器,就不要生成临时文件

原则1:
C#代码是运行在服务器端的,JS代码是运行在客户端
按钮确认提交的实现(在button中的onclick中写)
<input type="submit name="delete" value="删除" onclick="return confirm('确认删除?')"" />
代码是运行在浏览器端的,和服务器端没有关系
在服务器端"弹出消息窗口"
Response.Write("<script type='text/javascript'>alert('删除成功!')</script>");
并不是真的是在服务器端运行的,只是生成了JAVASCRIPT代码到浏览执行,不推荐用些方法,推荐
用后面讲的RegisterClientStartupScript,只是渲染到浏览器端

案例1:

在项目中添加对System.Windows.Forms的引用,然后MessageBox.Show("Hello");
经远程访问测试,C#代码是运行在服务器端的,Hello弹出在服务端
127.0.0.1是加环地址(LOOPBACK),localhost就是127.0.0.1的别名,是无法在外部访问的
0.0.0.0 任意IP,不用写死绑定的IP,可以用于任何IP都可能访问网络程序

案例2:

在ASP.NET中,可以在访问者磁盘中创建木马文件
File.WriteAllText("c:/muma.exe","木马(){QQ木马();机器狗();灰鸽子();});
有CassiniDev.exe启动测试,exe生成到了服务器的磁盘中,而不是访问者的磁盘中,因此C#
代码是运行在服务器中的,而不是浏览器中

案例3:

两个学生分别访问点击自增1的界面,互不影响,因为不同用户的变量内容是隔离的

原则2:
能在浏览器端完成的事情,就不要到服务端去做
按钮隐藏一个控件就不要写服务端代码,在客户端用JAVASCRIPT,DOM来操作就可以,
比如要操作数据库,显然是在浏览器端做不到的,这时候就要写服务端代码,校验用户名,密码
这样的操作可以放到浏览端(用户名,密码是写死的),技术上可以,但是这样安全性太差,因此
必须放到服务器端

原则3:
客户端验证不能代替服务器端验证
用客户端验证取款金额不能高于100元,如果客户端把 JAVASCRIPT 禁用了,验证将不生效
客户端校验是为了很好的客户端体验,服务器端校验是最后一次把关,防止恶意请求
后面讲的 Validation就是ASP.NET内置的数据校验技术,会在客户端和服务器端同时校验

原则4:
不要把机密信息隐藏在HTML中
只有密码输对了才显示下载地址,如果在客户端判断,先将下载地址隐藏,对了对显示,用户
可以查看源码得到,密码与下载地址
应该在服务端控制密码不对则 Visible=False,服务端控件的
HyperLink1.Visible = false 是根本不输出到客户端的
应该是在机密页面打开之前做权限校验,而不是在一个页面中做校验,如果正确就导向

WEB开发原则的更多相关文章

  1. html5文章 -- 使用 jQuery Mobile 与 HTML5 开发 Web App ——开发原则 | Kayo's Melody

    最近专注研究 jQuery Mobile —— 一款很方便就可以把 Web App 包装成适合 Android 与 iPhone 等触屏移动设备的 Javascript 库,结合 jQuery Mob ...

  2. .NET Web开发技术简单整理

    在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...

  3. Web开发技术发展历史

    Web开发技术发展历史   来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...

  4. Web开发基本准则-55实录-Web访问安全

    Web开发工程师请阅读下面的前端开发准则,这是第一部分,强调了过去几年里我们注意到的Web工程师务须处理的Web访问安全基础点.尤其是一些从传统软件开发转入互联网开发的工程师,请仔细阅读,不要因为忽视 ...

  5. 前端文摘:Web 开发模式演变历史和趋势

    今天的<前端文摘>给大家分享一篇玉伯的文章.文章详细介绍了 Web 开发的四种常用模式以及未来可能成为流行趋势的 Node 全栈开发模式,相信你看了以后一定会有收获. 您可能感兴趣的相关文 ...

  6. 10 位顶级 PHP 大师的开发原则

    10 位顶级 PHP 大师的开发原则 ruby_chen 发布于: 2013年03月28日 (61评) 分享到:    收藏 +139 #深圳# 6月10日 亚马逊AWSome Day云计算免费培训报 ...

  7. 个人的java web开发书单

    首发至个人博客http://www.zidafone.com/blog/36 以下是对一些读过的书和一些买后随便翻了翻的书的个人感觉.都是java web开发的程序员可能接触的书,其他的如设计/手机开 ...

  8. 【转】利用 Bootstrap 进行快速 Web 开发

    原文转自:http://blog.jobbole.com/53961/ 了解如何使用 Bootstrap 快速开发网站和 Web 应用程序(包括移动友好型应用程序).Bootstrap 以 LESS ...

  9. Flask —— 使用Python和OpenShift进行即时Web开发

    最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定 ...

随机推荐

  1. 并查集 poj1611&poj2492

    poj1611 简单题 代码中id记录父节点,sz记录子树规模.一个集合为一棵树. #include <iostream> #include <cstdio> using na ...

  2. Only one database connection at a time is supported

      Only one database connection at a time is supported 在网上找到了2个方法: 1. VSS在使用过程中,尤其是数据迁移的过程中,可能会出现上述情况 ...

  3. SqlServer定时跑一段SQL语句

    1.请把这段SQL语句写成一个存储过程,然后需要在B上面开启 SQL Server Agent服务,如下图: 2.开启完之后,打开数据库管理工具,然后依下图所示,展开“SQL Server Agent ...

  4. 问题-[WIN8.132位系统]安装Win8.1 遇到无法升级.NET Framework 3.5.1

    问题现象:安装Win8后都遇到了无法升级.NET Framework 3.5.1的问题,在线升级会遇到错误0x800F0906.这使得91手机助手等很多软件无法运行,更郁闷的是,网上几乎所有的解决办法 ...

  5. hdu 2102 A计划(优先队列+dfs)

    改了好久,上午来实验室打出来了,运行就是不对,一直找啊找!还是没找到,最后突然停电了,打好的代码还没保存呢! 刚才来的时候又重新打了一遍!!!结果一个小小的错误wrong了好久!!! 在dfs值返回时 ...

  6. EasyUI Datagrid 自定义列、Foolter及单元格编辑

    1:自定义列,包括 Group var head1Array = []; head1Array.push({ field: 'Id', title: 'xxxx', rowspan: 2 }); he ...

  7. Android开源工具库

    一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化,事件绑定等反复繁琐工作 1. AndroidAnnotations(Code Diet) android高速开发框架 项目地址:htt ...

  8. 为Windows 7的winsxs目录瘦身,谨慎。

    刚使用Win7 系统不久,前段时间在清理系统垃圾时发现,win7系统的windows文件夹下的winsxs 文件夹占用空间很大,想清理之,却提示无权限无法清理.随即在网上查了个到底,原来winsxs是 ...

  9. Iperf使用方法

    Iperf使用方法 Iperf  是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性.Iperf可以报告带宽,延迟抖动和数据包 ...

  10. hdu1047(Java)大数相加

    题目大意:输入n组数据,每组数据中又有若干长度不大于100的整数,以0结束每组数据的输入,求每组中数据之和.每两组数据输入之间有一行空格,输出也是如此. Integer Inquiry Time Li ...