django框架防止XSS注入的方法分析

2022-10-04 17:21:12 字數 1937 閱讀 6417

xss 是常見的跨站指令碼攻擊,而且這種型別的錯誤很不容易被發現或者被開發人員忽視,當然django 框架本身是有這方面的考慮的,比如在模板中自動開啟了 escape, 但事實上,我在改版我的 個人部落格 yihaomenvzoaawn.duapp.com 時,在評論框的地方沒有用到富文字編輯器,而是讓使用者自己輸入內容,如果某個使用者輸入了如下類似的東西:

這是我的評論,

而我在模板中是這樣使用的 }, 由於使用了 safe filter ,所以這裡會直接彈出對話方塊出來。這就是xss 注入了。真實的專案中是不允許出現這樣的情況的,用safe 的目的是為了更好的顯示html標籤等。所以要解決的方式是在後台接收到內容的時候,進行轉義處理,特別是 "< > " 這些符號,以及 單引號,雙引號等,最初,我自己寫了一些替換方法。比如

def checkxss(content):

checked_content = content

checked_content = re.sub(r"&", "&", checked_content,0,re.i)

checked_content = re.sub(r"'", "´", checked_content,0,re.i)

checked_content = re.sub(r'""', """, checked_content,0,re.i)

checked_content = re.sub(r"程式設計客棧nt = re.sub(r">", ">", checked_content,0,re.i)

checked_content = re.sub(r"/", "/", checked_content,0,re.i)

當然在後台處理掉這些,然後儲存到資料庫,再次開啟的時候,在模板用|safe 過濾器,就會還原成原來的樣子,確實沒錯。但問題是我自己畫蛇添足了。因為django 自身有一系列的方法。這些方法在 django.utils.html  package中。我用這幾個寫乙個測試.

'''created on 2013-11-21

yihaomen.com

'''from django.utils.html import escape, strip_tags, remove_tags

html_content = """

程式設計客棧

yihaomen.com test

css/style.css" rel="external nofollow" rel="stylesheet" type="text/css" />

content

"""def escape_html(html):

return escape(html);

def stript_all_tags(html):

return strip_tags(html)

def remove_part_tags(html,tags):

return remove_tags(html, tags)

if __name__ == '__main__':

print "====escape all tags*****="

print escape_html(html_content)

print "====remove all tags*****="

print strip_tags(html_content)

print "===remove part tags.*****"

print remove_part_tags(html_content,"script html body")

當然還有更多的方法,可以檢視django的**。 以上的方法可以看到 django 可以很方便的 eacape 所有html標籤,也可以部分 escape html標籤,還可以只保留內容等。確實很方便。

由此可見用 django.utils.html 裡面的東西,足夠應付 xss 注入.

本文標題: django框架防止xss注入的方法分析

本文位址:

防止SQL注入和XSS注入的方法總結

1 在openresty中新增naxsi加強防禦安裝方法 2 防止sql注入的思路和方法1.永遠不要信任使用者的輸入。對使用者的輸入進行校驗,可以通過正規表示式,或限制長度 對單引號和 雙 進行轉換等。2.永遠不要使用動態拼裝sql,可以使用引數化的sql或者直接使用儲存過程進行資料查詢訪問。3.永...

php防止xss攻擊以及sql注入

function safefilter arr value preg replace ra,value 刪除非列印字元,粗暴式過濾xss可疑字串 arr key htmlentities strip tags value 去除 html 和 php 標記並轉換為 html 實體 else else ...

Django防止XSS攻擊的幾種方式

一 什麼是xss攻擊 xss即跨站指令碼攻擊,xss是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web使用者將 植入到提供給其它使用者使用的頁面中。二 防止xss攻擊的兩種方式 1 對單一變數進行轉義過濾。可以使用escape過濾器,無需轉義時使用safe過濾器 例如 a變數為 你好 h...