iT邦幫忙

0

XSS 攻擊問題

因為之前還沒有意識到XSS攻擊的問題,目前想要大幅更改加入XSS攻擊的防禦手法,目前遇到一些問題

  1. 我應該是在抓取完資料庫資料後,使用htmlspecialchars來編碼要顯示的資料,還是儲存時就先編碼呢?
  2. 使用html可以正常顯示內容,但是使用val就會顯示編碼過的內容,程式碼如下`<?php
    $text = "alert('852')";
    $htmlspecialchars = htmlspecialchars($text);
    ?>
  1. 有方法可以大量為要顯示資料加入htmlspecialchars嗎? 還是說我只能一筆一筆去看這筆資料是否需要經過htmlspecialchars編碼呢?

感謝所有願意回復小弟問題的大大

2 個回答

0

我應該是在抓取完資料庫資料後,使用htmlspecialchars來編碼要顯示的資料,還是儲存時就先編碼呢?

正常是儲存時。但一般現在已經不用 htmlspecialchars 處理了

使用html可以正常顯示內容,但是使用val就會顯示編碼過的內容

同第一點回答。

有方法可以大量為要顯示資料加入htmlspecialchars嗎? 還是說我只能一筆一筆去看這筆資料是否需要經過htmlspecialchars編碼呢?

至少你找出問題點了。

結論:
使用 htmlspecialchars 的確是一招。
但處理起來太過麻煩了。
且碰上真的要儲存html碼的資料。你會哭的。
方向是對的。只是還想的不夠遠。

你可以看看現在新的db物件的處理方式如何。
不是單純編碼轉換就能處理的。

豬豬人 iT邦新手 5 級 ‧ 2021-02-01 19:34:11 檢舉

感謝星大,關於新的db物件的處理方式 有比較明確的關鍵字嗎?我比較好搜尋 謝謝

「db class」因該就能找到一堆了。

或是你覺得你功力夠的話。
也可以直接看composer內的db類。
不過我評估一下你的能力。可能會對你很吃力。

最好還是先從單純點的db類看。

0
chan15
iT邦新手 5 級 ‧ 2021-02-02 09:29:46

我處理的話是資料過來不處理,輸出處理,有幾個原因

  1. 不管是 API 輸出給前端處理或者是純 PHP render 都有相對應的方式可以過濾
  2. 經過加工會連正常的內容都 escape 增加資料長度,日積月累也很巨大
  3. 資料保留原始內容要對照的時候方便很多
豬豬人 iT邦新手 5 級 ‧ 2021-02-02 11:06:13 檢舉

chan15 謝謝,請問一班你是如何處理輸出內容的呢? 是寫成function套用嗎?還是針對每筆資料作相對應的編碼?
謝謝

我要發表回答

立即登入回答