vue ajax獲取數據的時候,如何保證傳遞參數的安全或者說如何保護api的安全


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.同一用戶的頻度控制

 輸出響應前服務端對SessionID混淆前綴並加密(MD5),埋點在HTML隱藏<Input />,所有請求將此字段發送給服務端,校驗是否相等
 判斷$_REQUEST['Referer'],判斷這個字段是不是為空或者不是你希望的域名
 
 
這類查看數據的api,有什么秘密可言么?如果真有秘密,那應該在api鑒權上下功夫,譬如要求訪問這個api的人必須登錄啊,或者有相應權限啊什么的。

否則如果僅僅是大眾數據,本來也是給人看的,那能防得住么?

還有一點你沒搞清楚,信息安全重點在信息,但你理解成獲取信息的渠道了。

Api就算防,也不是防止別人知道你的api,而且防止別人非法通過你的api獲取里面的數據

那么vue這種項目,用session還是cookie儲存用戶狀態。
https是在什么時候加密數據

首先,session是存在於服務端的存儲用戶狀態的東西。cookie是在客戶端保存數據的東西。二者完全不是一回事。

但通常我們配合使用,在客戶端用cookie保存一個sessionID,用戶每次發請求到后端都帶着這個sessionID,后端接收到請求后根據這個sessionID再從不管緩存也好、memcached之類的緩存工具也好里面拿出對應的session數據使用。

https是協議層的東西,通常公司的運維、it工程師搞定,當然如果你確實需要了解,可以網上查資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM