我有一个模型说TestModel
如下:
class TestModel(models.Model):
name = models.CharField()
description = models.TextField()
现在我可以使用ModelForm
将数据保存到此模型。但是,假设我想使用Ajax并将以下savethis?name=ABC&desc=SomeRandomDescription
的URL发送到处理它的视图,如下所示:
def savethis(request):
if request.GET['name'] and request.GET['desc']:
name = request.GET['name']
desc = request.GET['desc']
test = TestModel(name=name, description=desc)
test.save
return HttpResponse('Ok')
else:
return HttpResponse('Fail')
什么阻止某人运行一个脚本,该脚本可以轻松地使用有效数据点击此URL,从而将数据保存到我的模型中?如何确保仅从正确的来源发送传入数据?
一个选项是在Post请求中将数据作为JSON发送,但即使这样也不太难以emualte。
答案 0 :(得分:1)
似乎你偶然发现了Cross-site Scripting attacks.这个伟大的安全漏洞。他们有几种方法可以绕过它,但在一个答案中进入所有这些都是徒劳的。我建议你使用谷歌这个术语并做一些探讨,你会发现有几种不同的方法可以更好地保护你的网站。
Django有security page致力于讨论如何保护您的网站。