直接用户输入的动态 LINQ 有什么危险吗?

2024-01-11

我在 ASP.NET MVC 应用程序中有一个表,我希望可以使用 AJAX 对其进行排序(服务器端)和过滤。我希望它在其他地方相当容易使用,并且不想将排序和过滤硬编码到查询表达式中,因此我寻找一种动态构建表达式的方法,我发现最好的方法是使用动态 LINQ 。

来自如下 URL 的用户输入将直接插入到动态Where 或OrderBy 中。

/Orders?sortby=OrderID&order=desc&CustomerName=Microsoft

这将产生两个表达式:

OrderBy("OrderID descending")
Where(@"CustomerName.Contains(""Microsoft"")")

虽然我知道它不会直接扔到数据库中,并且在这里直接插入 SQL 是行不通的,因为它无法反映到属性,而且它是类型安全的等等,但我想知道是否有人比我更有创意无论如何,都可以找到一种利用它的方法。我能想到的一个漏洞是,可以对表中不可见的属性进行排序/过滤,但这并没有那么有害,因为它们仍然不会显示,并且可以通过散列来防止。

我允许直接用户输入的唯一方法是使用 OrderBy 和Where。

只是确定一下,谢谢:)


由于 LINQ to SQL 使用类型安全的数据模型类,因此默认情况下您可以免受 SQL 注入攻击。 LINQ to SQL 将根据基础数据类型自动对值进行编码。
(c)斯科特·古

但是您仍然可以在那里得到“除以零”,因此建议处理所有意外异常并限制有效条目的长度,JIC

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

直接用户输入的动态 LINQ 有什么危险吗? 的相关文章

随机推荐

  • 文件存在时 os.rename 不会引发 FileExistsError

    我有一个file rename我想通过一个简单的改进机制try except块将检查重命名的文件是否已存在于目录中 我在我的目录中准备了2个文件 data txt and old data txt 函数应该抛出异常 如下所示old data
  • LoadLibraryW() 无法加载 System32 中的 DLL

    我尝试使用以下代码加载 C Windows System32 文件夹中与打印机驱动程序一起安装的 DLL LoadLibraryW L C Windows System32 MagAPI dll GetLastError 报告 找不到指定的
  • 在没有 cron 的情况下在 AWS 中运行计划任务

    目前我在亚马逊有一台服务器 我把所有的 cronjobs 都放在里面 我想消除这个单点故障 并将所有任务公开为 Web 服务 我想将 VPC ELB 背后的服务公开给一些服务器 这些服务器将在调用时运行任务 Amazon AWS 是否提供某
  • 在驱动程序安装期间重新扫描设备树以了解硬件更改

    我在用着安装盾安装我的应用程序 驱动程序和服务 仅当在设备管理器中找到其硬件 ID 时 我才需要安装即插即用驱动程序 驱动程序安装是使用 DPInst exe 完成的 我的问题是 用户有时可以手动卸载驱动程序 安装后甚至卸载驱动程序 未知司
  • 在Http get请求上调用Https url

    我有一个https 网址并希望发送请求以从该 URL 获取数据 场景 1 从我的浏览器如果我点击 Url 我会得到响应 而从我的 Angularjs 应用程序我总是得到错误 401 但如果我从浏览器点击 Api 我总是得到正确的响应 出于安
  • Python-停止 FuncAnimation

    有谁知道停止 FuncAnimation 的首选方法 我正在使用它来记录示波器中的数据 并且希望能够按需暂停和重新启动数据 有什么方法可以向其发送按钮单击事件吗 谢谢 德里克 The FuncAnimation是一个子类TimedAnima
  • 将一个类中的值绑定到另一类中的另一个值

    我有以下课程课程要点 https gist github com anonymous 9306399 我想将 Item Visible 绑定到 Items ItemsVisible 可能吗 如果可以 如何 Item cs using Sys
  • 应如何处理变量扩展产生的反斜杠?

    我运行了以下命令 sh是一个名字sh实现 以及我能找到的所有 shell 虽然我期待所有的打印match 我得到了不一致的结果 我不知道哪种行为是正确的 可靠的 sh c case 1 in 2 echo match esac f oo f
  • Rails - 包括与动态条件的关联

    给定一个学校模型和一个学生模型 其中学校与学生有 has many 关系 has many students conditions gt proc year id send active year id 其中 active year id
  • 使用 ffmpeg 从 rtsp 源每 5 或 10 分钟截屏一次

    你好 我尝试制作脚本 每 5 或 10 分钟从 ip 摄像头获取屏幕截图 这个脚本可以工作 ffmpeg rtsp transport tcp i SOURCE vf fps fps 1 20 update 1 picture1 jpg 但
  • gnuplot 热图颜色范围

    我的文件中有一些 X Y Z 数据 我正在使用 gnuplot 来显示它 我正在创建一个热图 即 使用颜色呈现 Z 值的 2D 图 现在我正在使用以下脚本 set palette defined 0 blue 1 red plot xyz
  • Oracle:在更新一个字段时复制行

    请注意 我am问我想要回答的问题 我知道这个问题意味着数据库设置得不好 因此 我将否决任何建议更改表格设置方式的答案 我需要复制一堆行 同时更改一个值 name col1 col2 dave a nil sue b nil sam c 5
  • PHP htaccess 将查询字符串从大写重定向到小写

    我有这个小的 php 脚本和 htaccess 中的几行 用于将带有查询字符串的 URL 从大写重定向到小写 但是 仅当 url 文件或 url 的目录部分中有大写字符时 它才会将查询字符串中的大写字符重定向为小写字符 大写目录示例 dom
  • Java Spring JMS:JmsTemplate 到 IBM MQ

    Update 这是我的错误 我忘记了 ssl 调试正在运行 它现在非常快并且像魔术一样工作 我有一个使用 Spring JMS 连接到 IBM MQ 的 Spring Boot 应用程序 我意识到与根本不使用 Spring 相比 jmsTe
  • sys.stdin.readline() 读取时没有提示,返回“两者之间没有任何内容”

    我有一个执行以下操作 除其他外 的函数 userinput stdin readline betAmount int userinput 应该从 stdin 获取输入整数作为字符串并将其转换为整数 然而 当我调用该函数时 它返回一个换行符
  • 为什么在 JavaScript 构造函数中使用副作用是不好的做法?

    我使用与设计模式非常相似的东西自定义对象 http www klauskomenda com code javascript programming patterns custom通常在我的代码中 但 JSLint 不赞成这样的构造 fun
  • 远程运行 Perl 脚本时使用 MsgBox 回显变量?

    这可能吗 我正在使用 VB net 执行远程 Perl 脚本 我希望屏幕上出现一个 MsgBox 类似于 VBScript 我尝试只执行 Win32 MsgBox Test 但这不起作用 有可能吗 我正在从 Windows 系统远程执行脚本
  • 计算两幅图像之间的模糊内核

    与标准 且更具挑战性 去模糊和超分辨率场景不同 我可以访问原始 清晰 图像G而且是模糊版本B 我只是在寻找模糊内核h 所以因为B使用真实相机拍摄 关系为 B G h N 在哪里 表示卷积和N是一些附加噪声 自然 这是一个过度约束的问题 因为
  • 正则表达式仅匹配不在括号或方括号中的逗号

    我想用不在括号或方括号中的逗号分隔字符串 我正在使用以下字符串 土豆 植物油 向日葵油 玉米油和 或菜籽油 蜂蜜 烧烤调味料 糖 盐 葡萄糖 圆酵母 洋葱粉 香料 麦芽糊精果糖 酵母提取物 糖蜜 天然香料 含牛奶 玉米淀粉 蜂蜜 阿拉伯胶
  • 直接用户输入的动态 LINQ 有什么危险吗?

    我在 ASP NET MVC 应用程序中有一个表 我希望可以使用 AJAX 对其进行排序 服务器端 和过滤 我希望它在其他地方相当容易使用 并且不想将排序和过滤硬编码到查询表达式中 因此我寻找一种动态构建表达式的方法 我发现最好的方法是使用