是否有一个通用的"表单清理程序",我可以用来确保从提交的表单中删除所有的html /脚本?form.clean()似乎没有做任何事情 - html标签仍然在cleaning_data中.或者实际上手动执行此操作(并覆盖表单的clean()方法)是我唯一的选择?
我工作的Django应用程序有一个Event模型.一个Event可能有关联的照片,静态HTML文件和PDF文件.
我想允许受信任的用户上传这些文件,但我对安全性很警惕,特别是在Django文档(链接)中阅读了以下内容.
请注意,无论何时处理上传的文件,都应密切关注上传文件的位置以及文件的类型,以避免安全漏洞.验证所有上传的文件,以确保文件符合您的认可.例如,如果您盲目地让某人将文件上传到Web服务器文档根目录中的目录而无需验证,那么有人可以上传CGI或PHP脚本并通过访问您站点上的URL来执行该脚本.不要允许.
如何验证不同类型的文件?我很想听听任何人处理这种事情的经历,或者是进一步阅读的链接.我有一种直觉,认为html文件风险太大,在这种情况下我会限制管理员的上传权限.
Jinja2的自动转义所有的HTML标签,但我想摆脱不了一些标签(比如img,b和其他一些).我该怎么做?
非技术背景信息:我在一所学校工作,我们正在使用Django建立一个新网站.为学校工作的教师在技术上没有足够的能力使用另一种MarkUp语言,如MarkDown.我们最终决定使用WYSIWYG编辑器,这会带来安全漏洞.我们并不太担心教师本身,而是更多可能获得教师资格的恶意学生.
技术背景信息:我们正在使用Django 1.3运行,尚未选择特定的编辑器.我们倾向于使用像TINYMCE这样的javascript,但可以说服它使用任何允许安全性和易用性的东西.因为WYSIWYG编辑器将输出要呈现到文档中的HTML,所以我们不能简单地将其转义.
什么是防止恶意代码的最佳方法,同时仍然让非技术教师轻松撰写帖子?
我目前有一个简单的<div contenteditable="true">工作,但是,这是我的问题.
目前,用户可以通过<script>在div中插入一个持久的XSS ,我绝对不想要.
但是,我目前解决这个问题的想法是:
你们有什么建议?
使用Django,用户是否可以在表单字段中提交HTML,保存,然后在模板中呈现HTML?
一个示例是用户在文本字段中添加链接,然后应该在文本的其余部分中将其呈现为标记.
用户输入如下内容:
this is a site called <a href="http://stackoverflow.com">SO</a>.
Run Code Online (Sandbox Code Playgroud)
SO链接将是一个链接,而不是将其呈现为文本.
编写Python Web应用程序,我想创建一个文本区域,用户可以用轻量级标记语言输入文本.该文本将导入到html模板并在页面上查看.今天我用这个命令来创建textarea,它允许用户输入任何(html)文本:
my_text = cgidata.getvalue('my_text', 'default_text')
ftable.AddRow([Label(_('Enter your text')),
TextArea('my_text', my_text, rows=8, cols=60).Format()])
Run Code Online (Sandbox Code Playgroud)
我怎样才能改变它,以便只允许一些(安全的,最终轻量级的)标记?包括消毒剂在内的所有建议都是受欢迎的,只要它可以轻松地与Python集成.
我一直在使用优秀的漂白库来删除错误的HTML.
我有一堆HTML文档已经从Microsoft Word粘贴,包含以下内容:
<STYLE> st1:*{behavior:url(#ieooui) } </STYLE>
Run Code Online (Sandbox Code Playgroud)
使用漂白(style隐藏不允许标记),让我:
st1:*{behavior:url(#ieooui) }
Run Code Online (Sandbox Code Playgroud)
哪个没用.Bleach似乎只有以下选项:
我正在寻找第三种选择 - 删除标签及其内容.
我有一些html(在这种情况下通过TinyMCE创建)我想添加到页面.但是,出于安全原因,我不想只打印用户输入的所有内容.
有没有人知道一个模板标签(最好是一个过滤器),它只允许渲染一个安全的html子集?
我意识到降价和其他人这样做.但是,它们还添加了额外的标记语法,这可能会让我的用户感到困惑,因为他们使用的是不知道降价的富文本编辑器.
如果我要创建一个用户可以将任意html放入其"个人资料"或类似内容的网站,我该如何阻止该html中嵌入的JavaScript运行?
我可以在for(;;);某处放置无限循环吗?如果是这样,我会把它放在哪里?
此方法还有哪些其他安全问题?
我正在测试feedparser我的 RSS 提要。它就像一个魅力,我得到了所有的条目。
有些新闻有一个内嵌的 youtube 播放器,但这只是没有出现在 feedparser 的返回值中。
我的代码很简单:
d = feedparser.parse('http://feeds.feedburner.com/NotciasPs3evita-Mypst')
Run Code Online (Sandbox Code Playgroud)
这将返回(摘录):
guidislink': False,
'id': u'http://mypst.com.br/forum/index.php?/topic/17336-gamegen-call-of-duty-black-ops-2-ganha-trailer-com-acao-real-e-muitas-surpresas/',
'link': u'http://mypst.com.br/forum/index.php?/topic/17336-gamegen-call-of-duty-black-ops-2-ganha-trailer-com-acao-real-e-muitas-surpresas/',
'links': [{'href': u'http://mypst.com.br/forum/index.php?/topic/17336-gamegen-call-of-duty-black-ops-2-ganha-trailer-com-acao-real-e-muitas-surpresas/',
'rel': u'alternate',
'type': u'text/html'}],
'published': u'Mon, 29 Oct 2012 14:53:58 +0000',
'published_parsed': time.struct_time(tm_year=2012, tm_mon=10, tm_mday=29, tm_hour=14, tm_min=53, tm_sec=58, tm_wday=0, tm_yday=303, tm_isdst=0),
'summary': u'A Activision revelou hoje um novo trailer de Call of Duty: Black Ops 2, substituindo as cenas de a\xe7\xe3o do jogo por cenas de a\xe7\xe3o na vida real. O trailer traz diversas \u201csurpresas\u201d e …Run Code Online (Sandbox Code Playgroud) 我想允许用户发布图片,因此需要添加|safe到模板标签并使用beautifulsoap使用此代码段将某些标签列入白名单.
但是,我想知道如何避免像下面这样的潜在恶意属性?
<img src="puppy.png" onload="(function(){/* do bad stuff */}());" />
Run Code Online (Sandbox Code Playgroud)
更新: 请注意,上面链接的代码段有一些XSS漏洞,这里提到
django ×7
python ×6
html ×4
security ×3
javascript ×2
django-forms ×1
escaping ×1
feedparser ×1
file-upload ×1
filter ×1
flask ×1
forms ×1
html5lib ×1
jinja2 ×1
jquery ×1
markdown ×1
markup ×1
sanitization ×1
templatetags ×1
wysiwyg ×1
xss ×1