https://segmentfault.com/q/1010000005618139
vue ajax獲取數據的時候,如何保證傳遞參數的安全或者說如何保護api的安全
點擊提交,發送請求。
但是api:123用於加密的參數,直接暴露了。右鍵源代碼就可以看到

<body> <div class="row"> <div class="col-md-4 col-md-offset-4"> <table class="table table-bordered" id="content"> <tr> <td> 商品分類 </td> <td> <select name="cid" v-model="cid"> <template v-for="vo in goodscategory"> <option v-bind:value="vo.goodscategory_id">{{vo.goodscategory_name}}</option> </template> </select> {{cid}} </td> </tr> <tr> <td style="width: 30%"> 商品名稱 </td> <td> <input type="text" name="name" v-model="goodsname" value=""/> <span>{{ goodsname }}</span> </td> </tr> <tr> <td> 排序 </td> <td> <input type="text" name="sort" v-model="sort"/> {{sort}} </td> </tr> <tr> <td> 價格 </td> <td> <input type="text" v-model="price"/> {{price}} </td> </tr> <tr> <td> 商品描述 </td> <td> <textarea name="desc" id="" cols="30" rows="5" v-model="desc"></textarea> {{desc}} </td> </tr> <tr> <td colspan="2"> <button type="button" v-on:click="submit">提交</button> </td> </tr> </table> </div> </div> <script type="text/javascript"> var vm = new Vue({ el:"#content", data: { cid:0, goodsname:"", sort:0, price:0, desc:"", goodscategory:[] }, methods: { submit: function () { this.$http({ url: 'http://localhost/wang/index.php/Admin/Goods/createProcess', method: 'POST', emulateJSON: true, data: { cid: this.cid, name: this.goodsname, sort: this.sort, price: this.price, desc: this.desc } }).then(function(response) { console.log(response.data); }, function(response) { }); } }, ready: function() { var self = this; this.$http({url: 'http://localhost/wang/index.php/Home/Vue/goodscategory', method: 'POST'}).then(function (response) { self.$set('goodscategory', response.data) }, function (response) { // error callback }); } }) </script>
解決方案:
1.接口服務方輸入控制
2.參數合法性校驗
3.HTTPS
4.CSRFToken安全性校驗
這對用戶是透明的,防范思路:
1.服務端CSRFToken校驗
2.refer校驗
3.同一用戶的頻度控制
判斷$_REQUEST['Referer'],判斷這個字段是不是為空或者不是你希望的域名
二
這類查看數據的api,有什么秘密可言么?如果真有秘密,那應該在api鑒權上下功夫,譬如要求訪問這個api的人必須登錄啊,或者有相應權限啊什么的。
否則如果僅僅是大眾數據,本來也是給人看的,那能防得住么?
還有一點你沒搞清楚,信息安全重點在信息,但你理解成獲取信息的渠道了。
Api就算防,也不是防止別人知道你的api,而且防止別人非法通過你的api獲取里面的數據
那么vue這種項目,用session還是cookie儲存用戶狀態。
https是在什么時候加密數據
首先,session是存在於服務端的存儲用戶狀態的東西。cookie是在客戶端保存數據的東西。二者完全不是一回事。
但通常我們配合使用,在客戶端用cookie保存一個sessionID,用戶每次發請求到后端都帶着這個sessionID,后端接收到請求后根據這個sessionID再從不管緩存也好、memcached之類的緩存工具也好里面拿出對應的session數據使用。
https是協議層的東西,通常公司的運維、it工程師搞定,當然如果你確實需要了解,可以網上查資料
