web开发的一些基本原则
时间:2010-09-10 来源:喝高了点
一、最小权限原则
只允许用户做***操作,而不是不允许用户做***操作。
用户看到的是服务器端执行输出的结果,用户不可能看到aspx、aspx.cs源文件,目标另存为也是保存的服务器端执行后的结果。js、html是被输出到浏览器上的,用户有办法看到。
二、C#代码运行在服务器端,js代码运行在客户端。
可以在空间的OnClientClick中编写客户端代码(js):return confirm(‘真的要删除吗?’)
服务器端编写context.Response.Write("<srcipt ty[pe='text/javascript> alert(' 删除成功')</script>'");
会看到页面加载时弹出消息框,查看源文件可以看到上面的代码在html源文件的最上端,即浏览器先解析上面的js程序,在继续向下解析。
不能用这种方法来询问客户是否继续操作,因为这种方法阻塞的是客户端的解析和运行,不会对服务器端产生影响。
服务器端添加Windows.Forms的引用,然后调用MessageBox。show();方法企图显示消息框式错误的,因为这个程序会运行在服务器端,而不是客户端,用户出发时消息框在服务器端弹出。
三、能在浏览器做的事就不要再服务器端做。如做一个加法运算,隐藏一个控件等。
四、客户端是不可信的
客户端验证不能代替服务器端验证。客户端验证时为了方便用户使用,服务器端验证时为了确保数据合法。有些人可以越过浏览器直接和服务器通信,或禁用js等,如果省略服务器端的验证会不安全。
不要把机密的数据算法等放到客户端。如输入密码后才可下载功能。如果仅是在html中把下载地址隐藏了,那用户一定可以看到。这样是不安全的,可以用Hyperlinker控件。让他的visible属性为false,只有用户输入正确密码后把visible为TRUE,为FALSE是在客户端html中式看不到这个控件的,只有提交返回后才把这个控件渲染回来。
应该是在机密页面打开之前做权限校验,而不是在一个页面中做校验,如果正确就倒向机密页面,不正确就不导向。