我知道這是一個廣泛的問題,但我想我在這裏錯過了一些東西。簡單地使用inspect元素並編輯javascript和html,攻擊者是否有可能造成網站損壞?例如,有人很容易改變輸入的最大長度,並上傳太多的數據以至於可能導致服務器崩潰,我知道在服務器上檢查數據總是一個好習慣,但它仍然看起來太簡單了。或者另一個更具潛在危險的例子是,如果攻擊者可以混淆$.ajax
調用並向服務器發送不良信息。在攻擊者的瀏覽器上,我應該更多地擔心還是僅僅是暫時的變化?攻擊者是否可以使用檢查元素?
回答
這些更改在個人用戶的瀏覽器上是臨時的。
但是,這些更改將允許該用戶與您的後端交互,但他們選擇這樣做。這是網站受到攻擊的一種方式。
標準規則是永遠不會信任來自用戶/瀏覽器的輸入。不要相信隱藏字段的值,不要相信他們沒有改變長度,不相信他們沒有添加新值(比如下拉菜單),不信任任何在Javascript中完成的驗證,等
一些例子:
- 在過去,一些購物網站將包括支付爲形式的隱藏字段中輸入金額。在更改此值的同時,仍然批准交易時更改了信用卡收取的金額。
- 帶有Javascript驗證規則的網站,可以通過直接發佈到後端服務,直接發佈自己的SQL和HTML/Script注入攻擊來跳過。
- 下拉菜單,單選按鈕和複選框輸入可以將意外值添加到表單中。
添加到Trevor的回覆:通過了解網站在實踐中被攻擊的方式,海報將會受益。幾乎每個黑客都使用[打嗝套件](https://vimeo.com/148320460)。 – TheGreatContini
好的,所有這些答案都嚇我一跳!我想我需要非常小心服務器端驗證。很好的答案btw! –
你應該爲此擔心。永遠不要相信來自客戶端的輸入。不要指望你在客戶端執行的任何檢查是真正執行的。你總是需要檢查服務器端的輸入。正如您已經提到的,用戶可以使用各種檢測工具來更改本地代碼或完全手工製作惡意數據包。
是的,他們可以。當他們檢查元素時,他們可以在本地修改所有內容,所以它會對本地環境進行臨時修改,但是他們可以修改可能影響服務器的值。
例如,假設您有一個在線商店,並且您有一個「編輯產品」選項。一旦你到達那裏,你有一個隱藏的字段,在那裏你存儲產品ID,這樣當你試圖更新後端產品時,你將使用該ID來知道哪個產品要更新。攻擊者可以輕鬆更改該值,現在他可以修改任何其他產品(包括不屬於他的產品)。
另一個典型的例子是一些領域,在那裏你假設用戶將只能提交數值,所以在後端,您使用的號碼與您的查詢,例如,像
"SELECT * FROM Products WHERE Price > " + Price;
您期待的數值,因此您認爲攻擊者無法發送SQL注入的文本,但他可以輕鬆修改該值(通過更改文本輸入的數字輸入,在發送之前修改javascript值或攔截網絡流量並從那裏修改值),現在您可以得到類似的結果:
"SELECT * FROM Products WHERE Price > 0; DROP TABLE Products--"
這就是你永遠不應該信任用戶輸入的主要原因。你期待一個數值嗎?然後在使用它之前確保它是一個數字。您的用戶是否更新產品?確保產品在更新之前確實屬於他。你的數據是否有maxlength屬性?仔細檢查您的服務器以確保它仍然具有有效的長度。
這看起來很簡單,但人們會犯錯誤。一個簡單的例子是「心臟出血」錯誤,其中所有可能通過驗證請求的長度而避免,而不是信任用戶提交的數據。
這就是爲什麼您永遠不要信任用戶提交的數據,並且始終在您的後端執行雙重檢查的主要原因。
- 1. 是否可以刪除「檢查元素」?
- 2. Deplhi TEmbeddedWB檢查元素是否可見
- 3. 是否可以在瀏覽器中禁用檢查元素?
- 4. jquery檢查元素是否有元素
- 5. 如何使用Java在Selenium WebDriver中檢查元素是否可點擊
- 6. 檢查一個HTML元素是否可編輯使用JS
- 7. Xamarin UItest - 是否可以檢查元素的值?
- 8. CSS可以檢查元素是否中斷?
- 9. 是否可以將JavaScript插入Google Chrome的「檢查元素」?
- 10. 的javascript:檢查是否元素可以接受
- 11. 在Google Chrome中使用檢查元素時是否可以保留大小寫?
- 12. 檢查物品和攻擊
- 13. 檢查觀察者是否包含某些元素
- 14. 是否可以用SitePrism點擊第N個元素?
- 15. 檢查MySQL日誌是否存在性能問題/ DOS攻擊
- 16. 這個有效性檢查是否易受攻擊?
- 17. 檢查在字典攻擊期間嘗試是否成功
- 18. 檢查元素是否爲給定元素的父元素
- 19. 是否可以使用客戶端JavaScript實現類似Firebug的「檢查元素」DOM元素熒光筆?
- 20. 檢查ArrayList中是否有可用元素
- 21. 如何檢查點擊是否直接在元素或其子元素中?
- 22. 檢查是否點擊任何子元素
- 23. Selenium檢查元素是否退出並單擊
- 24. UIAutomation:在點擊前檢查元素是否存在
- 25. Javascript檢查所有點擊是否已完成加載元素
- 26. 如何檢查元素是否準備點擊
- 27. 使嵌套元素比父元素更寬是否可以?
- 28. Windows Azure是否可以輕鬆抵禦拒絕服務攻擊?
- 29. ASP.NET MVC中的AntiForgeryToken是否可以防止所有CSRF攻擊?
- 30. 這是否可以防止注入攻擊?
答案是肯定的。 – wOxxOm
他們根本不必使用網絡瀏覽器。他們可以拋出他們想要在您的網站上的任何地獄網絡請求,這可能看起來不像在正常使用中會發生什麼。您必須爲看起來像幾乎任何事情的請求做好準備。 – user2357112