写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度,本篇采用jsencypt在前端进行加密的并且用C#在后端解密,在投票提交分数等H5应用上可以使用的上,并且进行简单的封装。
1.demo
<!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 src="/Scripts/jquery-1.10.2.min.js"></script> <script src="/Scripts/JsEncryptHelper.js"></script> </head> <body> </body> </html> <body> <form id="form1> <div> <label>Public Key</label><br /> <label for="input">Text to encrypt:</label><br /> name:<input id="username" name="username" type="text"></input><br /> password:<input id="passwd" name="passwd" type="password"></input><br /> <input id="testme" type="button" value="submit" /><br /> </div> </form> </body> <script> $(function () { $('#testme').click(function () { console.log("开始发送数据请求"); var data = {}; data.username = $('#username').val(); data.passwd = $('#passwd').val(); console.log("加密前数据:", JSON.stringify(data)); var result = $.encryptRequest({ data: data }); console.log("加密后数据:", JSON.stringify(result)); $.ajax({ url: '/Yhz/TestDecrypt', dataType: 'jsonp', type:'post', data: result, success: function (res) { console.log("服务端解密成功:", JSON.stringify(res)); } }) }); }); </script>