程序员开发网站必知的知识点

一.http协议

(1) 响应吗: “200”:OK "301":Moved Permanently 永久转移 "302": Found 暂时转移(Url重定向) "307":Temporary Redirect (中转站) "400":错误请求(不符合http协议) "401":Unauthorized未认证,提示用户名密码才能登陆 “403”:禁止 “404”:没找到 “500”:服务器内部错误 “503”:访问人数过多(Server Unavailable) 200正常;300段需要对请求做进一步处理;400段表示客户端请求错误;500段表示服务器的错误

(2)一种资源一个请求 (3)http无状态 服务器主动发数据ServerPush等技术 (4)希望页面不刷新用ajax技术 (5)多线程下载基于断点续传 (6)请求响应模型例子(行删除) 按钮删除与行超链接删除:按钮删除是通过表单将行的id提交给服务器(submit按钮是将表单所有信息都提交到服务器); 行超链接删除是通过超链接的url通过get方式提交给处理页面,超链接方式由于没有提交所有表单信息,因此很多服务端控件的高级用法用不了。 用aspx重写,超链接的因为没有向服务器提交ViewState隐藏字段,所以处理时IsPostback是false; 而按钮是提交了表单,所以。。是true;可以在超链接href里加入表单提交的js代码,这样就是LinkButton的原理

注意:只要不通过viewsate传递,pageload直接写服务器执行代码;如果后台加了ispostback,则必须用viewsate传递

二.web开发原则

(1)最小权限原则

(2)客户端看不到aspx源代码,看到的只是服务端生成html文本

(3)能在客户端完成的最好都在客户端完成

(4)客户端验证(用户体验)不等于服务端验证(最后一次把关),客户端验证不可信(比如客户端禁用掉js等,在客户端设置的验证就全部都失效了)(建议都加上双重验证) 【ASP。NET内置validation数据校验定义好双重校验]

(5)不要把敏感数据、算法写在客户端,不要把机密信息隐藏在客户端 【应该在服务端用visable控制,密码不对,则false;注意:服务端控件的visable设为false根本不会输出到客户端,变为true时才会输出(实现机密的下载地址,只有点击确定,客户端才可以看到下载地址 【客户端源代码html也是随visable属性显示隐藏的】;在和Jquery结合时是无法用$(“#控件ID”).show()来显示visable=false的控件的,应为html代码页面根本不存在,true的时候才存在);

其他:添加System.Windows.Form应用,可以直接用Messagebox.show()方法弹出复杂点的对话框(缺点:运行在服务器端,多人访问网站会乱);CassiniDev.exe开源版本的net服务器可设置任意IP访问本站 127.0.0.1是回环地址(loopback),表示访问本机,不走 网卡的,直接在本地。localhost别名;无法在外部访问;0.0.0.0任意IP(绑定到这个ip,通过本机的任意一块网卡都可访问); File.WriteAllLine("c:/muma.exe","exe执行的代码");在本地创建文件;C#代码运行在服务器端

三.XSS漏洞(不要亲信用户提交上来的数据【Crass Site Script】跨站脚本)

利用漏洞在知名网站弹出一个自定的对话框(页面,以传参数形式(通过工具转为url编码附加到地址栏,欺骗用户账号密码)) 【ASP.NET 在aspx页面中page里加入validateRequest=false(对请求的数据的一种校验机制)就可以禁止aspnet内置的对xss的漏洞的禁止】

File.AppendAllText("c:/1.txt",textbox.text)//在指定文件里追加内容 ReadAllText(filepath)返回的是字符串类型 如果用户发帖发的是脚本,用HttpUtility.HtmlEncode就可以将特殊符号转换为html文本显示,不会当成脚本运行 Literal控mode设置成Encode就可以显示全部代码

posted @ 2013-01-16 18:37  创业男生  阅读(233)  评论(0编辑  收藏  举报