如何防止Django REST API CharFields中的XSS攻击?

s

我目前正在使用将Django 2.2与djangorestframework 3.9.2结合使用的应用程序。我知道Django本身提供了针对SQL注入的保护,或者在Django模板(XSS)中显示内容的上下文中提供了保护,但是我注意到,虽然我使用Django REST API,但模型中的所有CharField都不会自动清除。

注意:此问题不适用于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脚本(基本上是跨站点脚本)。

这是预期的行为吗?如何预防?

永远不要走

您可以escape()在序列化程序的验证中使用方法:

from django.utils.html import escape

class MySerializer:
    def validate_myfield(self, value):
        return escape(value)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止JSP中的XSS攻击

来自分类Dev

在 Spring MVC 中防止 XSS 攻击

来自分类Dev

如何在Django REST API中查看多个API?

来自分类Dev

Angular-如何防止RxJs fromEvent中的XSS攻击?

来自分类Dev

如何保护Django Rest API

来自分类Dev

如何在Django Rest Framework API中隐藏网址?

来自分类Dev

如何在Django Rest Api中删除集合?

来自分类Dev

如何在Django Rest Api中删除集合?

来自分类Dev

防止XSS攻击表单

来自分类Dev

如何防止在Express中的REST api调用中使用冲突的关键字

来自分类Dev

Rest api而不是Django中的Views

来自分类Dev

Django rest API中的内部函数提升

来自分类Dev

在 Django REST API 中命名 JSON 数组

来自分类Dev

如何防止XSS攻击(php / pdo)

来自分类Dev

如何防止RESTful服务免受XSS攻击

来自分类Dev

如何在Meteor中创建Rest API

来自分类Dev

如何避免Android中的Rest API滥用?

来自分类Dev

如何在Rest API中传递令牌?

来自分类Dev

如何在Meteor中创建Rest API

来自分类Dev

如何避免Android中的Rest API滥用?

来自分类Dev

如何在Docker中升级Rest API?

来自分类Dev

如何在Rest API中实现错误?

来自分类Dev

Django Rest Framework API

来自分类Dev

Django Rest API ManyToMany API中没有任何内容

来自分类Dev

可以反映在提供非HTML响应的REST API上发生的XSS(跨站点脚本)攻击

来自分类Dev

如何防止非特权访问Rest API URL?

来自分类Dev

如何应对XSS攻击

来自分类Dev

如何应对XSS攻击

来自分类Dev

如何缓存Django Rest Framework API调用?