Web开发原则
- 原则一
- 最小权限原则(不是”不允许…”而是”只允许…”)
- 原则二
- js浏览器端 & c#服务器端原则
- <asp:button>.onClientClick属性 //渲染生成代码在浏览器端
i++;
Response.Write(“<script type=‘text/javascript’>alert(”+i+”)</script>”);
//对于浏览器端来说生成的HTML代码就是一堆字符串 到了浏览器端才有意义才会执行
- 服务器端MessageBox.Show(“服务器端!”)
LoopBack/回环地址(Localhost:2209/127.0.0.1): 访问本机/数据不走网卡 无法外部访问(如想外部访问可通过绑定本机地址或0.0.0.0(任意IP/AnyIP))
- 原则三
- 代码尽量浏览器端完成原则
- 元素隐藏
document.getElementById(*).style.display = “display”; //尽量浏览器端完成代码
- 原则四
- 浏览器端不可信任原则
- 客户端验证不能代替服务端验证(客户端校验为了客户体验 防止频繁刷新/服务端校验为了最后把关)
onClientClick=
“var i = document.getElementById(*).value;
if(parseInt(I,10) > 100){ alert(‘金额不能大于100’); return false; }”
//禁用JavaScript或直接模拟发送HTTP请求
- 浏览器端不要写敏感数据or算法
if($(“#username”).val()==“admin” && $(“#password”).val()==“123”)
//浏览器端控件display=“none”(源代码中控件可见) 服务器端控件Visible=false(源代码中控件不可见)
- 原则五
- 浏览器端仅可查看服务器端执行输出文本原则(可以查看js html/代码无法查看aspx cs代码)
- 原则六
- XSS漏洞(Cross-site scripting/跨站脚本漏洞):
Showmessage.aspx?msg=******
//******(<script type=“text/javascript”>alert(“你中奖了!”)</script>)
- XSS漏洞原因: 参数直接显示
- XSS漏洞预防:
①<%@ Page ValidateRequest=“false”> //禁止捕捉XSS漏洞(aspx文件默认设置)
②HttpUtility.HtmlEncode(***) //将字符串中的”<“ “/”等字符转换为html特殊字符(< $gt…)
(System.Web)HttpUtility类: 提供用于在处理Web请求时编码和解码 URL的方法
③Label & Literal控件: Label控件需手动调用HttpUtility.HtmlEncode()方法 / Literal控件将Mode属性设为”Encode”即可