回答
2
瀏覽
1933
1、輸入檢查
輸入檢查的邏輯,必須放在服務器端代碼中實現。如果只是在客戶端使用JavaScript進行輸入檢查,是很容易被攻擊者繞過的。目前Web開發的普遍做法,是同時在客戶端JavaScript中和服務器端代碼中實現相同的輸入檢查。客戶端JavaScript的輸入檢查,可以阻擋大部分誤操作的用戶,從而節約服務器資源。
2、輸出檢查
一般來說,除了富文本的輸出外,在變量輸出到HTML頁面時,可以使用編碼或轉義的方式來防御XSS攻擊。
針對HTML代碼的編碼方式是HtmlEncode,它只是一種函數實現。它的作用是將字符轉化成HTMLEntities。
為了對抗XSS,在HtmlEncode中要求至少轉換一下字符:
回答所涉及的環境:聯想天逸510S、Windows 10。
預防跨站腳本攻擊的措施有以下這些:
盡可能避免直接進行OS調用。
如果需要的話,建立可接收命令的白名單,并在命令執行之前對所接收的輸入加以驗證。
如果用戶輸入的字符串可能傳遞給操作系統,那么可以“采用編號-命令字符串”的方式對用戶輸入進行映射,例如{1:ping-c 5}。
對代碼進行靜態分析,當代碼用到os.system()等OS命令時需格外留意。
默認所有的用戶輸入都是不可信的,并將返回給用戶的數據以轉義字符的形式進行輸出。(例如,將&轉義為&,將<轉義為<,將>轉義為>等)。
針對XSS漏洞,使用X-XSS-Protection和Content-Secur。
確保在量產的固件版本中禁用了帶有命令執行功能的調試接口。
回答所涉及的環境:聯想天逸510S、Windows 10。