2016-11-04 47 views
0

這樣的測試代碼。我有2頁。在第一頁,...是AJAX jQuery發佈數據安全瀏覽器/客戶端操作

<head> 
     $(document).ready(function(){ 
      $("#btn").click(function(){ 
       $.ajax({ 
            type: 'POST', 
            url: 'test2.php', 
            data: { name: 'doflamingo'}, 
            success: function(response) { 
            $('body').html(response); 
            } 
           }); 
      }); 
     }); 
</head> 
<body> 
     <input type="button" value="Click" id="btn"> 
</body> 

和test2.php

<?php 
echo $_POST['name'] 
?> 

如果我點擊第一頁上的按鈕,它會顯示 「doflamingo」 文本。 但如果我去瀏覽器的Firebug並將'doflamingo'編輯爲'luffy'並點擊按鈕,它仍然會顯示'doflamingo'。所以這意味着AJAX的jQuery是安全的,從黑客的權利?我不需要增加更多的安全權利?
另外我編輯url從test2.php到random.php,但url仍然是'test2.php

+1

您可以在網絡選項卡中添加斷點,並實際修改該實例的函數/變量。有很多方法來篡改數據。還有許多工具可用,如Tam猴,油脂猴! –

+0

「檢查」什麼元素?修改DOM不會更改代碼。你說的這個「安全」是什麼?你想要保護什麼?如果您要測試用戶是否可以修改JavaScript或將自定義值發送到您的服務器,那麼您的測試無效。用戶可以在他們自己的瀏覽器中做任何他們想做的事情。 – David

+0

我認爲你的問題沒有得到很好的回答。什麼是InspectElement瀏覽器? –

回答

1

行爲是正確的,因爲一旦javascript被加載,瀏覽器內存中就會加載它。

所以如果你這樣做得到一個html元素的值,這將是改變。

,需要考慮安全性的一些要點:

瀏覽器默認它們實現的HTTP訪問控制(CORS)在這裏看到更多的參考: CORS

所以基本上,這意味着在默認情況下,你纔可以recibe要求來自你自己的域名。

但是,如果你曾經頁面被加載,並且你嘗試在瀏覽器的f.example檢查器中注入JavaScript惡意代碼會怎麼樣?這個請求將來自一個用戶,所以你不知道這個請求是否是一個有效的請求...

這被稱爲CSRF(跨站點請求僞造)或XCSRF(與ajax)。

一個簡單的方法來嘗試處理它,可以對請求的檢查已經與良好的行爲做...

F.example,你有一個頁面,首先是渲染,然後用戶將一個請求:

  • 服務器端執行腳本併發送HTML到瀏覽器,所以我們我們可以附加「呈現的頁面」

    /** 
    * Preventing CSRF 
    */ 
    
    $time = time(); 
    $_SESSION['time'] = $time; 
    
    $salt = 'gxYrE9G5kxlPcPOC1DSTWOehgw9Rb6FQ9q2qr5vpCPhBV418Q9TUYUK91cvd'; 
    $_SESSION['token']= sha1($salt . $time); 
    ...attach this token in a hidden input on html 
    
  • 頁的indentifier現在我ŝ呈現與隱藏的輸入或meta標籤或任何內部的標記,所以當你做Ajax請求,你必須包含這個令牌回服務器,並覈對你之前存儲發送HTML:

    $_POST['crsf'] !==$_SESSION['token'] 
    

永遠不要信任用戶請求,過濾所有數據,並且可以盡你所能完成更多的檢查,例如minimun Request Throttling(只需要在請求之間存儲差異,如果這是更大的形式n秒丟棄.. )。

所以你的答案絕對不是,ajax對瀏覽器/客戶端操作不安全,因爲任何技術都不是100%免於安全問題的技術。

相關問題