使用AJAX安全地将数据保存到django模型

时间:2014-09-02 17:58:32

标签: ajax django

我有一个模型说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。

1 个答案:

答案 0 :(得分:1)

似乎你偶然发现了Cross-site Scripting attacks.这个伟大的安全漏洞。他们有几种方法可以绕过它,但在一个答案中进入所有这些都是徒劳的。我建议你使用谷歌这个术语并做一些探讨,你会发现有几种不同的方法可以更好地保护你的网站。

Django有security page致力于讨论如何保护您的网站。