🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
6 messages
6 total messages Started by Marek Mon, 05 Jul 2010 18:59
[django] Wpuszczanie whitelistowane tagi HTML w inpucie
#27576
Author: Marek
Date: Mon, 05 Jul 2010 18:59
15 lines
1274 bytes
Witam,

Z tego co wiem Django ma automatyczny mechanizm uniemożliwiający 
(utrudniający?) ataki typu XSS. Czy jednak jest mozliwość wybiórczego 
whitelistowania tagów np. HTML'a, które chcałbym aby były były 
interpretowane przez przeglądarke. Dla przykładu chciałbym aby tagi z 
inputu który poda user, typu <b></b>, <i></i> nie były escape'owane a 
tekst był rzeczywiście pogrubiony, kursywą etc. Ale żeby kwiatki typu 
<script> alert(1) </script> 
były wyświetlane jako: &lt;script&gt; alert(1) &lt;/script&gt; (czyli już 
normalne autoescape)

pozdrawiam

Marek
Re: Wpuszczanie whitelistowane tagi HTML w inpucie
#27578
Author: Sławek Tuleja
Date: Mon, 05 Jul 2010 20:53
51 lines
3063 bytes
On Jul 5, 8:59 pm, Marek <ma...@octogan.usun.net> wrote:
> Witam,
>
> Z tego co wiem Django ma automatyczny mechanizm uniemożliwiający
> (utrudniający?) ataki typu XSS. Czy jednak jest mozliwość wybiórczego
> whitelistowania tagów np. HTML'a, które chcałbym aby były były
> interpretowane przez przeglądarke. Dla przykładu chciałbym aby tagi z
> inputu który poda user, typu <b></b>, <i></i> nie były escape'owane a
> tekst był rzeczywiście pogrubiony, kursywą etc. Ale żeby kwiatki typu
> <script> alert(1) </script>
> były wyświetlane jako: &lt;script&gt; alert(1) &lt;/script&gt; (czyli już
> normalne autoescape)
>
> pozdrawiam
>
> Marek

czesc Marek

faktycznie nie ma takiego filtru w django
- albo jest: usuwanie wszystkich tagow (striptags)
- alob usuwanie wybranych tagow (removedtags)

sprobuj sobie napisac taki filtr biorac pod uwage kod dla tych wyzej
wymienionych funkcji (ewentualnie mozna poszukac w internecie
rozwiazan (ja znalazlem takie: http://djangosnippets.org/snippets/1655/):

def removetags(value, tags):
    """Removes a space separated list of [X]HTML tags from the
output."""
    tags = [re.escape(tag) for tag in tags.split()]
    tags_re = u'(%s)' % u'|'.join(tags)
    starttag_re = re.compile(ur'<%s(/?>|(\s+[^>]*>))' % tags_re, re.U)
    endtag_re = re.compile(u'</%s>' % tags_re)
    value = starttag_re.sub(u'', value)
    value = endtag_re.sub(u'', value)
    return value
removetags.is_safe = True
removetags = stringfilter(removetags)

def striptags(value):
    """Strips all [X]HTML tags."""
    from django.utils.html import strip_tags
    return strip_tags(value)
striptags.is_safe = True
striptags = stringfilter(striptags)

def strip_tags(value):
    """Returns the given HTML with all tags stripped."""
    return re.sub(r'<[^>]*?>', '', force_unicode(value))
strip_tags = allow_lazy(strip_tags)
Re: Wpuszczanie whitelistowane tagi HTML w inpucie
#27587
Author: Sławek Tuleja
Date: Mon, 05 Jul 2010 20:58
5 lines
1483 bytes
poprzednio blednie podalem nazwe funkcji:
zamiast: removedtags
ma byc: removetags

pozdrawiam
Re: [django] Wpuszczanie whitelistowane tagi HTML w inpucie
#27585
Author: Adam Przybyla
Date: Mon, 05 Jul 2010 20:58
15 lines
1614 bytes
Marek <marek@octogan.usun.net> wrote:
> Witam,
> 
> Z tego co wiem Django ma automatyczny mechanizm uniemożliwiający 
> (utrudniający?) ataki typu XSS. Czy jednak jest mozliwość wybiórczego 
> whitelistowania tagów np. HTML'a, które chcałbym aby były były 
> interpretowane przez przeglądarke. Dla przykładu chciałbym aby tagi z 
> inputu który poda user, typu <b></b>, <i></i> nie były escape'owane a 
> tekst był rzeczywiście pogrubiony, kursywą etc. Ale żeby kwiatki typu 
> <script> alert(1) </script> 
> były wyświetlane jako: &lt;script&gt; alert(1) &lt;/script&gt; (czyli już 
> normalne autoescape)
	... tworcy zalecaja poprawki frameworka;-) Poszukaj odpowiedniego kawalka,
jest dosc dobrze udokumentowany;-) Z powazaniem
								Adam Przybyla
Re: [django] Wpuszczanie whitelistowane tagi HTML w inpucie
#27574
Author: Marek
Date: Mon, 05 Jul 2010 22:09
8 lines
1006 bytes
Dnia Mon, 05 Jul 2010 20:58:35 +0000, Adam Przybyla napisał(a):
> ... tworcy zalecaja poprawki frameworka;-) Poszukaj odpowiedniego
> kawalka,
> jest dosc dobrze udokumentowany;-) 

tzn. sugerujesz dopisanie takiej funkcjonalności w samym Django? :) 

Marek
Re: [django] Wpuszczanie whitelistowane tagi HTML w inpucie
#27591
Author: Adam Przybyla
Date: Wed, 07 Jul 2010 05:18
10 lines
1338 bytes
Marek <marek@octogan.usun.net> wrote:
> Dnia Mon, 05 Jul 2010 20:58:35 +0000, Adam Przybyla napisał(a):
>> ... tworcy zalecaja poprawki frameworka;-) Poszukaj odpowiedniego
>> kawalka,
>> jest dosc dobrze udokumentowany;-) 
> 
> tzn. sugerujesz dopisanie takiej funkcjonalności w samym Django? :) 
	..  tak, dosc latwo daje sie nadpsac pewne funkcje na podstawie tego,
co jest we frameworku. Z powazaniem
								Adam Przybyla
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads