网站---不要相信浏览器
1、当提交的时候用。return checkForm() 这个方法。
2、服务器断的代码不可少,JavaScript 校验只是“可用性”考虑,而服务器端的校验才是正真的最后“把关者”。
3、服务器的代码如果少了,就会产生漏洞,js少了只是体验性不好而已!
4、在局网站中是没有办法获取主机的MAC地址的。http协议知道,所以不能用它来唯一标记。
5、只有在局域网中是可以获取主机的MAC地址的。
6、IP内网的公网的IP地址是一样的。
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>网银</title> <script type="text/javascript"> function checkForm() { var amount = parseInt(document.getElementById("amount").value); if (amount>1000) { //alert("取款金额不能大于一千!"); // return false; } return true; } </script> </head> <body> <form action="atm.ashx" method="post" onsubmit="return checkForm();"> 取款金额:<input type="text" name="amount" id="amount" /> <input type="submit" value="取款" /> </form> </body> </html>
服务器端的验证必不可少:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Web1.Day3.cp1 { /// <summary> /// atm 的摘要说明 /// </summary> public class atm : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; //1、取得amount的对应的键值 int amount = Convert.ToInt32(context.Request["amount"]); //2、服务器端的检查必不可少!!! if (amount>1000) { context.Response.Write("不能超过1000元!"); return; } context.Response.Write("取款成功!"); } public bool IsReusable { get { return false; } } } }
如果服务器端没有设置验证: http://localhost:55725/Day3/cp1/atm.ashx?amount=9900 否则,懂程序的人就可以自己在地址栏中输入地址就可以直接达成目的!