zoukankan      html  css  js  c++  java
  • WEB开发原则

    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 是根本不输出到客户端的
    应该是在机密页面打开之前做权限校验,而不是在一个页面中做校验,如果正确就导向 

  • 相关阅读:
    【leetcode】1020. Partition Array Into Three Parts With Equal Sum
    【leetcode】572. Subtree of Another Tree
    【leetcode】123. Best Time to Buy and Sell Stock III
    【leetcode】309. Best Time to Buy and Sell Stock with Cooldown
    【leetcode】714. Best Time to Buy and Sell Stock with Transaction Fee
    【leetcode】467. Unique Substrings in Wraparound String
    【leetcode】823. Binary Trees With Factors
    【leetcode】143. Reorder List
    【leetcode】1014. Capacity To Ship Packages Within D Days
    【leetcode】1013. Pairs of Songs With Total Durations Divisible by 60
  • 原文地址:https://www.cnblogs.com/yezuhui/p/6842713.html
Copyright © 2011-2022 走看看