2015-12-27 75 views
2

以下代碼是兩個搜索框,分別在啓用/禁用javascript時工作。它工作正常,但我想知道是否有任何安全問題,我正在驗證這兩種形式。我只想知道<noscript>本身是否有任何安全問題。使用<noscript>是否存在安全風險?

<div class='searchbox1'> 
    <form action="search.php" method="post"> 
    <input type="text" name="search" placeholder="Enter keyword ..." /> 
    <input type="image" src="./img/search-icon.png" alt="submit" /> 
    </form> 
</div> 
<noscript> 
    <style> 
    .searchbox1 { 
     display: none; 
    } 
    </style> 
    <div class='searchbox2'> 
     <form action="different.php" method="post"> 
      <input type="text" name="search" placeholder="Enter keyword ..." /> 
      <input type="image" src="./img/search-icon.png" alt="submit" /> 
     </form> 
    </div> 
</noscript> 
+0

爲什麼服務器會根據客戶端JS是否啓用而以不同的方式處理相同的表單?這裏的原始前提似乎有點隱藏,也許有缺陷,這使得我們被要求回答關於某棵樹的問題時,我們無法看到森林的全景圖像,知道發生了什麼。 – jfriend00

回答

4

noscript標籤只顯示是否沒有JS打開。 沒有針對noscript的安全問題。請注意,我沒有分析實際代碼的安全性,只是回答關於noscript安全性的具體問題。

我還要指出,你的整理</style>標籤是畸形的(注意:這已被固定在問題代碼中)。這會給你一些問題。

我還要指出,考慮到兩者之間的標記幾乎完全相同,除了它使用哪個PHP文件和div的類名之外,還有一種更簡單的方法。

只需使用不採用JS的標記,然後使用 JS替換那些2位數據。這樣,當沒有JS時,它有適當的標記,當有JS時,JS爲JS版本創建適當的標記,並且標記中只有一種形式供您處理。

1

有與沒有任何安全問題。

說了這話,這種方法中的其他東西正在吸引我的眼球。這似乎是唯一的驗證是在客戶端。 Javascript是完全客戶端的,因此可以被禁用,如果客戶希望這樣做(這可能或不能觸發<noscript>,直到客戶的選擇),如果你沒有驗證服務器端以及信息,請考慮你的輸入客戶端的完整控制 - 在大多數情況下,這是非常有問題的,因爲它可能會增加基於輸入的漏洞,例如injectionsbuffer overflow

相關問題