2015-11-13 155 views
1

我有一個這樣的結構的網絡應用程序。如何隱藏html源代碼?

<div id="public"> 
//.... 
</div> 
<div id="admin"> 
//.... 
</div> 

「public」div對任何人都是可見的。直到管理員用戶登錄時,「admin」div纔有css display:none,然後css變成display:inline,並且變得可見。 admin div包含一些可能影響我們數據庫的功能,所以保持它的安全非常重要。

我意識到我可以簡單地打開chrome dev控制檯,找到管理員div css,並將顯示內容更改爲內聯,並且顯示管理員div。我怎樣才能防止這個?或者,我如何可以安全地隱藏管理員分區,直到我可以驗證管理員登錄?

理想情況下,我想保持這個網站作爲一個單一的HTML頁面,雖然我願意改變,如果我必須。我想到的一個解決方案是將管理員html代碼保留在服務器上,並在檢測到成功登錄時請求它。

任何想法?

編輯:我使用Tomcat的服務器,所以servlets。

+7

僅當用戶憑證已經過驗證時才添加管理員'div' – Ramanlfc

+3

將管理員代碼保留在頁面外(因爲它不生成/發送它),除非有登錄管理員。任何你發送給客戶的東西都可以被客戶看到。 – T0xicCode

+2

當您發送管理員HTML時,假設它已被入侵_anyway_ - 確保當您從服務器返回任何從有效的登錄會話中返回的任何內容時。 –

回答

1

如果你正在使用PHP或任何語言,你需要的,如果條件和內部自帶您的代碼,如果$ admin變量被設置

if($admin){ 
    <div id="admin"> 
//.... 
</div> 
} 
-1

你可以使用AJAX調用請求管理員將是唯一可見代碼,然後設置Web服務器以僅在以管理員身份登錄時提供代碼。

代碼樣本複製/改編自dov.amir的回答(誰也有一個jQuery樣品):

<script type="text/javascript"> 
function loadXMLDoc() { 
    var xmlhttp; 

    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { 
     // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == XMLHttpRequest.DONE) { 
      if(xmlhttp.status == 200){ 
       document.getElementById("admin").innerHTML = xmlhttp.responseText; 
      } 
      else if(xmlhttp.status == 400) { 
       alert('There was an error 400') 
      } 
      else { 
       alert('something else other than 200 was returned') 
      } 
     } 
    } 

    xmlhttp.open("GET", "AdminHtml.txt", true);  //Change to the address of your code 
    xmlhttp.send(); 
} 
</script> 

您需要設置權限的Web服務器上。

+0

@LGSon這是一個完整的答案,它只是沒有一個例子。代碼示例是很好的,而不是一個要求。請查看[投票](http://stackoverflow.com/help/privileges/vote-up)和[vote-down](http://stackoverflow.com/help/privileges/vote-down)規則。 – Trisped