Giriş Python kullanarak Sanitising kullanıcı
Python tabanlı bir web uygulaması için kullanıcı girişi sterilize etmek için en iyi yolu nedir? Tek bir işlevi HTML karakterler ve diğer gerekli karakter kombinasyonu XSS veya SQL enjeksiyonu saldırısı mümkün değildir emin olmak için kaldırın.
CEVAP
Burada attribues beyaz onclick
kullanamazsınız () beyaz liste ve etiket özellikleri değil, tüm etiketleri kaldırmak bir parçacık.
href="javascript:..."
, kullanarak insanları engellemek için öznitelik değerleri normal ifade ile http://www.djangosnippets.org/snippets/205/ ve diğer davalar http://ha.ckers.org/xss.html açıklanan değiştirilmiş bir versiyonudur.
(<a href="ja vascript:alert('hi')">
örneğin <a href="ja vascript:alert('hi')">
vb.)
Gördüğünüz gibi, (harika) BeautifulSoup kütüphane kullanır.
import re
from urlparse import urljoin
from BeautifulSoup import BeautifulSoup, Comment
def sanitizeHtml(value, base_url=None):
rjs = r'[\s]*(&#x.{1,7})?'.join(list('javascript:'))
rvb = r'[\s]*(&#x.{1,7})?'.join(list('vbscript:'))
re_scripts = re.compile('(%s)|(%s)' % (rjs, rvb), re.IGNORECASE)
validTags = 'p i strong b u a h1 h2 h3 pre br img'.split()
validAttrs = 'href src width height'.split()
urlAttrs = 'href src'.split() # Attributes which should have a URL
soup = BeautifulSoup(value)
for comment in soup.findAll(text=lambda text: isinstance(text, Comment)):
# Get rid of comments
comment.extract()
for tag in soup.findAll(True):
if tag.name not in validTags:
tag.hidden = True
attrs = tag.attrs
tag.attrs = []
for attr, val in attrs:
if attr in validAttrs:
val = re_scripts.sub('', val) # Remove scripts (vbs & js)
if attr in urlAttrs:
val = urljoin(base_url, val) # Calculate the absolute url
tag.attrs.append((attr, val))
return soup.renderContents().decode('utf8')
Başka posterler de dediği gibi, hemen hemen bütün Python db kütüphaneleri bu gayet iyi karşılar yani SQL enjeksiyon ilgilen.
Python: kullanıcı giriş ve komut satır...
Eğer kullanıcı giriş olup olmadığını k...
Python kullanarak bir dosya var olup o...
Renkleri kullanarak Python ile termina...
Nasıl rastgele bir liste Python kullan...