【发布时间】:2020-05-19 03:47:34
【问题描述】:
我目前正在开发一个使用 Django 2.2 和 djangorestframework 3.9.2 的应用程序。我知道 Django 本身提供了针对 SQL 注入的保护,或者在 django 模板 (XSS) 中显示内容的上下文中,但我注意到当我使用 Django REST API 时,我的模型中的所有 CharFields 都不会自动清理。
注意:这个问题不适用于 django 模板。
例如拥有直接消息模型 (message/models.py):
class Message(models.Model):
sender = models.ForeignKey(...)
receiver = models.ForeignKey(...)
message = models.CharField(max_length=1200)
timestamp = models.DateTimeField(...)
is_read = models.BooleanField(default=False)
实际上并不阻止任何人发送内容为<script>alert("Hello there");</script> 的消息。它将保存在数据库中并由 REST API 按原样返回,允许远程运行任何 JS 脚本(基本上是跨站点脚本)。
这是预期的行为吗? 如何预防?
【问题讨论】:
标签: python django django-rest-framework