Django,如果使用原始 SQL,我应该采取哪些步骤来避免 SQL 注入攻击?

2024-04-19

我读到 ORM 应该最大限度地减少 SQL 注入攻击的可能性。然而在 Django 中,有时 ORM 受到一定限制,我需要使用原始 SQL。我应该采取哪些步骤来避免 SQL 注入攻击?

目前我知道检查查询字符串中的分号,但除此之外就不知道了。如果我使用参数化查询,这可以解决问题吗?是否有任何库可以将字符串传递给它,为我检查它?


The 文档状态 https://docs.djangoproject.com/en/1.6/topics/db/sql/#passing-parameters-into-raw下列:

如果需要执行参数化查询,可以使用params 论证raw():

>>> lname = 'Doe'
>>> Person.objects.raw('SELECT * FROM myapp_person WHERE last_name = %s', [lname])

params是参数列表或字典。你将使用%s列表查询字符串中的占位符,或者%(key)s占位符 对于字典(其中 key 被字典键替换, 当然),无论您的数据库引擎如何。这样的占位符将是 替换为 params 参数中的参数。

这也是使用 Python 的 DB-API 传递参数的标准方法,它将正确清理您的查询。

无论你做什么,都不要进行字符串插值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django,如果使用原始 SQL,我应该采取哪些步骤来避免 SQL 注入攻击? 的相关文章

  • 为什么 SqlClient 在传递 SqlXml 时使用不必要的 XML 转换?

    我有一个关于从 C 代码将 xml 数据类型传递给查询的问题 首先 这是 SQL Server 上的一个表 CREATE TABLE dbo XmlTable id int IDENTITY 1 1 NOT NULL dat xml NOT
  • 如何 md5 所有列(无论类型如何)

    我想创建一个 sql 查询 或 plpgsql 它将 md5 所有给定的行 无论类型如何 但是 在下面 如果 1 为空 则哈希为空 UPDATE thetable SET hash md5 accountid accounttype cre
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • 月份增量查询

    我想通过添加 1 个月来更新数据库中的月份 但我不知道如何在以下存储过程查询中添加月份 我不擅长 sql 请检查它 ALTER PROCEDURE dbo ChangePassword password varchar 20 epasswo
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • django.db.utils.ProgrammingError:关系“django_content_type”不存在

    我有一个项目 我在我的电脑上慢慢建立起来 并且运行良好 我只是想将它放到服务器上 但收到此错误 django db utils ProgrammingError 关系 django content type 确实 不存在 我无法解决这个问题
  • 计算运行总计时出错(之前期间的累计)

    我有一张桌子 我们称之为My Table有一个Created日期时间列 在 SQL Server 中 我试图提取一个报告 该报告显示历史上有多少行My Table按月在特定时间 现在我知道我可以显示有多少added每个月 SELECT YE
  • 使用具有外键的模型序列化器在 Django Rest Framework 中的父表上执行 CRUD

    在我的 API 中 我有两个模型Question and Option如下所示 class Question models Model body models TextField class Options models Model que
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • Nginx 与 Daphne 给出 502 Bad Gateway

    由于 Django Channels 和 uwsgi 出现问题 我决定用 daphne 替换 uwsgi 关注后this http masnun rocks 2016 11 02 deploying django channels usin
  • SQL Server 上的语法错误

    这可能是一个愚蠢的语法错误 但我只是继续阅读我的程序 但我无法弄清楚我的错误在哪里 消息 156 第 15 级 状态 1 第 41 行关键字附近的语法不正确 为了 这是我的代码 alter procedure LockReservation
  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Django - 使用静态文件的奇怪行为

    我是姜戈的新手 我试图理解静态文件 css 和图像 发生了什么而变得疯狂 问题的简历如下 当我使用来自第三方应用程序 Haystack 的静态视图时 我无法使用静态文件 我的项目有这样的目录结构 1001empbr name of the
  • 使用 Django 从标准输出返回 pdf 响应

    我正在使用 wkhtmltopdf 创建 PDF 文件 但是我不知道如何正确返回它们 所以我必须将它们写入我的媒体文件夹 然后重定向到刚刚创建的文件 编辑 Ian 的建议是写入 STDOUT 因此我更改了 wkhtmltopdf 命令来执行
  • Django 管理员更改用户密码

    我是 Django 新手 我有以下代码 Model class MyUser AbstractUser profile models OneToOneField Profile null True on delete models PROT
  • 禁用在 django Rest Framework 中创建嵌套对象

    Hi 你能帮我怎么做吗禁用创建嵌套对象 我有这样的序列化器 员工拥有团队的外键 class TeamSerializer serializers ModelSerializer class Meta model Team fields id
  • 在 Django 中使用 path() 找不到 404

    我刚刚查看 django 并尝试通过视图列出书籍id作为 URL 的参数books urls py 但出现 404 页面未找到错误 当我在浏览器中输入此网址时 我没有发现网址有什么问题 http 192 168 0 106 8000 boo
  • Django model.foreignKey 并返回 self.text 错误

    所以我正在 Django 中处理 model py 但遇到了 2 个 pylint 错误 我不明白为什么 这是 pylint 的问题还是我在代码中做错了什么 E1120 No value for argument on delete in
  • WordPress:wpdb->插入与wpdb->准备(wpdb->查询(“INSERT

    我想知道 WordPress 的插入功能是否也向数据添加斜杠 如果没有 准备查询方法似乎可以更好地防止 SQL 注入 我尝试在 codex api 中查找问题 然而 它似乎没有记录 谢谢 这个问题有点老了 自从提出这个问题以来 法典可能已经

随机推荐

  • Django - DRF - 调度方法流程

    我正在与 DRF 合作构建一个 API 并使用主类对基于类的视图进行一些验证 class MasterClass APIView def dispatch self request args response super FaveoAPIV
  • 将回调地狱转换为延迟对象

    背景 所以 我有一个相当大的项目 有很多 API 函数 我正在考虑完全转向协程 但由于它们的实现方式是Callback并不是Deferred 我无法有效地使用它们 例如 我想做apiCallOne apiCallTwo and apiCal
  • SqlBulkCopy 的建议批量大小是多少?

    建议的批量大小是多少SqlBulkCopy 我正在寻找一个可以用作性能调整起点的通用公式 我有一个导入实用程序与我的 SQL Server 实例位于同一台物理服务器上 使用自定义IDataReader 它解析平面文件并将它们插入数据库中SQ
  • Vim:如何将一组行重新格式化为一行(如果该行是一个句子)?

    不是重复的在 Vim 中 将文件中的所有行连接成一行的最简单方法是什么 https stackoverflow com questions 391710 in vim what is the simplest way to join all
  • 线段-多边形相交

    问候 我想检测一个线段是否只 接触 多边形或穿过它 人物 解释了我的疑问 如何知道情况A和B的区别 请注意 在这两种情况下 红线在两个顶点处穿过多边形 一个顶点与外部相接触 另一个顶点与内部相交 我有一个段 段相交算法 但我不知道如何正确使
  • 使用 iText 段落之间的图像

    我正在使用 iText 生成自定义 pdf 文档 我尝试了很多 但无法获得包含图像的文本的所需设计 我需要如下所示的输出 我尝试过 Chunk 类和 Paragraph 类 但我无法获得所需的结果 有任何想法吗 你有 至少 两个选择 Use
  • MySQL select for update 返回空集,即使存在一行

    我发现 MySQL 的 选择更新 有一个奇怪的问题 我使用的是5 1 45版本 我有两张桌子 mysql gt show create table tag Tabl
  • 在 Mac 上打开 CSV 文件时出现错误 53

    当我尝试打开 CSV 文件时 我得到 错误 53 找不到文件 我在第四行收到错误 Open FilePath For Input As 1我究竟做错了什么 这是我第一次打开 CSV 请宽容我的代码 Sub opentextfile Dim
  • “Android”中的所见即所得视图编辑器?

    复制 有适用于 Google Android 的表单设计器吗 https stackoverflow com questions 1755860 我想移动一个复选框 以便它显示在与 main xml 内绝对布局下的左上角不同的位置 对于 A
  • 这个文件格式叫什么

    我需要解析以下格式的文件 General Description Some Text Version 4 ProjType 1 Configurations Mice BuildOutputs BuildProject OutputFile
  • 更改背景颜色

    好吧 我对 vim 还很陌生 我不知道如何更改背景颜色 我正在编辑 vimrc 文件来设置这些颜色 但找不到任何背景颜色 我正在使用一个配色方案 我只需要知道如何覆盖它或者要查找什么 以便我可以在我的 color theme vim 文件中
  • 如何让 NSView 不裁剪其边界区域?

    我在 Xcode 上为 OS X 创建了一个空的 Cocoa 应用程序 并添加了 void applicationDidFinishLaunching NSNotification aNotification self view NSVie
  • Android Studio 布局编辑器无法渲染自定义视图

    在 Android Studio 中 布局编辑器无法预览 xml 中的自定义视图 非常简单的例子 public class MyCustomView extends FrameLayout public MyCustomView Conte
  • 使用 Lucene 进行精确短语搜索?

    我正在使用 SpanTerm Query 在 lucene 中搜索确切的短语 但这似乎不起作用 这是我的代码 Indexing IndexWriter writer new IndexWriter dir new StandardAnaly
  • 预计结构位于 的左侧。或 .* 但它是一个结构

    我收到编译错误structure required on left side of or on chest contents 0 but chest是一个结构 class Item public int id int dmg class C
  • 将JSON键值对绑定到polymer dart中的表模板

    如何以聚合物表示法绑定到 json 对象内的键 值对 我有模板重复 jsonarray中的对象 我想布置一个表格 假设每个对象有 1 一 2 二 3 三 就像是
  • Python 线程模块导入失败

    我正在尝试导入线程模块 但是 我似乎只是无缘无故地收到了错误 这是我的代码 import threading class TheThread threading Thread def run self print Insert some t
  • 是否可以引用 styles.xml 文件中的属性?

    我想让用户能够切换整个应用程序的颜色皮肤 我的意思是当用户按下屏幕上的按钮时动态切换应用程序的某些自定义视图的样式 我知道如果你打电话Activity setTheme before onCreate 方法 您可以动态更改应用程序的主题 但
  • 循环调用lambdaify,避免显式调用

    我有这个代码 var a b c arr np array 1 2 3 4 5 6 7 8 9 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 y np hsplit arr len var newdict for
  • Django,如果使用原始 SQL,我应该采取哪些步骤来避免 SQL 注入攻击?

    我读到 ORM 应该最大限度地减少 SQL 注入攻击的可能性 然而在 Django 中 有时 ORM 受到一定限制 我需要使用原始 SQL 我应该采取哪些步骤来避免 SQL 注入攻击 目前我知道检查查询字符串中的分号 但除此之外就不知道了