zoukankan      html  css  js  c++  java
  • ASP.NET初级学习2

    HTTP协议简介

    1.web开发是和http协议打交道的,必须了解http协议。http协议版本:http/0.9http/1.0http/1.1版本

    http协议分析工具

    1.DebugBarHttp(s)标签的内容。免费的,只能分析当前浏览器中的内容。

    HttpWatch,收费的,也是只能分析当前浏览器的内容。推荐使用。

    http协议的几个概念:

    1.      连接(connection):浏览器和服务器之间传输数据的通道,一般请求完毕就关闭,不会保持连接

    2.      请求(Request):浏览器向服务器发送的“我要。。”的消息,包含请求的类型,请求的数据、浏览器的信息(语言、浏览器的版本等)

    3.      相应(Response):服务器对浏览器请求的返回的数据,包含是否成功,错误码等。

    Http响应码 浏览器向服务器发出请求,服务器处理可能是成功,可能是失败、可能没有权限访问等原因,服务器会通过响应码来告诉浏览器处理结果。

    HTTP/1.1 200 OK 200是状态码:表示请求处理成功。

    301表示永久转移。    302 Found暂时转移   400  错误请求 发出不符合http协议的请求

     404 页面找不到。     307 临时重定向       401 未认证  一般需要输入用户名密码才能登录

     500内部服务器错误。 403 :Forbidden 禁止访问

    网页中如果有图片,css,js等外部文件的话,图片,css,js都在单独的请求中,也就是并不是页面的所有内容都在一个请求中完成,而是每一个资源一个请求。

    一般情况下,只有浏览器请求服务器端,服务器端才有给浏览器相应数据,不会主动向浏览器推送数据,这样是安全考虑,也是提高服务器的性能。如果要服务器像客户端浏览器推送数据,则需要使用ServerPush等额外技术。

    http是“请求—响应”工作方式,因此页面会不断的刷新,如果不希望页面刷新则要使用AJAX等技术。

    多线程下载基于断点续传。

    请求响应模型的例子

    超链接和提交表单的区别,一个是直接访问,一个是有postback。

     

    Web开发的一些基本原则

    1.最小权限原则。只允许用户做***,而不是“不允许用户做***”

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

     C#代码是运行在服务器端的,js代码是运行在浏览器端的。可以在客户端执行的代码就放在客户端执行,例如按钮确认提交在button的onclientclick="return confirm('真的要删除吗?')。运行在浏览器端。

    还有一种看起来像是在服务器端弹出对话框。但其实也是在浏览器中执行的:

    Response.Write(“<script>alert(‘删除成功!’)</script>”);其实这段代码,是在服务器端将段字符串写到浏览器中的,浏览器执行时识别出这是JavaScript代码,就弹框了。其实服务器端根本不知道这是一句弹框代码,也不会阻塞服务器端代码继续执行下去。(不推荐使用,推荐使用RegisterClientStartupScript)

    真正在服务器端弹出对话框也没有意义:比如:DialogResult dr= MessageBox.Show("服务器端弹出?对话框,要先添加winForm的引用,怎么我上次那么傻呢!这样都没想到。","傻逼?",MessageBoxButtons.YesNo);

    为什么会没有意义呢?很简单,我们的网站是供人访问的,但是如果每次访问后弹出的提示框都在服务器端,那么客户端根本就不会知道,而且服务器端也会因为弹出太多的框框而卡死!!

    按钮隐藏一个控件就不要写服务器端代码,在客户端用JavaScript、dom来操作就可以。校验用户名,密码这样的操作可以放到浏览器端,但是安全性差,因此还是必须放到服务器端。

    客户端验证不能代替服务端验证

    像网银金额校验,不单单在客户端要校验,服务器端也要校验,客户端校验是为了很好的客户体验,快速发现问题,不必要再执行下去,服务器端是最后一次把关,防止恶意请求

    不要把敏感数据,算法写在浏览器端

    不要把机密信息保存在html

    服务器端的控件visible=false时,控件定义根本不会画到客户端浏览器中,而客户端控件则不同,只是把display属性设为none

     

    XSS漏洞

    不要在一个页面中直接请求一个字符串然后显示成html代码。你可以将请求的字符串经过html编码后显示出来,而不是让他执行html代码

    用户发贴时也存在xss的问题。将发帖内容保存到一个文本文件中。

    我们可以对请求的数据做检测,如果请求数据中有<等就认为是恶意攻击,禁止提交,aspx默认就是才用这种策略,这样做的缺点是不能在论坛中html代码的帖子,这样不好。

      因此,更好的处理方法是将html内容原样显示出来,而不是以html的方式显示出来。使用HttpUtility HtmlEncode就可以将字符串中的特殊字符串显示出来,也就是不把<script>当成定义脚本的标签,而是当成&lt;script&gt;这样可以在页面中直接显示出来的内容。

  • 相关阅读:
    luoguP3822 [NOI2017]整数
    luoguP2150 [NOI2015]寿司晚宴
    luoguP3868 [TJOI2009]猜数字
    luoguP4777 【模板】扩展中国剩余定理(EXCRT)
    luoguP2048 超级钢琴
    题解 P1004 【方格取数】
    戊戌年西安游记
    题解 P4388 【付公主的矩形】
    题解 P4277 【河城荷取的烟花】
    001 dynamic Linq
  • 原文地址:https://www.cnblogs.com/YangFengHui/p/2018588.html
Copyright © 2011-2022 走看看