从用户数据创建 Clojure 关键字的安全隐患?

2024-01-07

假设我获取用户提供的字符串 userstring,并对其进行调用(关键字 userstring)。

这样做是否存在任何安全问题?如果是这样,缓解这些问题的最佳方法是什么?


Per http://clojure.org/reader http://clojure.org/reader,符号和关键字中的字符有效是有规则的。 (目前,字母数字字符和*, +, !, -, _, and ?.) 您永远不应该创建包含任何其他字符的符号。然而,目前,编译器完全不强制执行这些规则。

充其量您最终可能会得到无效的关键字。在最坏的情况下,你可能会遇到邪恶/危险的事情,例如 米哈乌·马尔奇克说道。请记住#=()可用于在读取时运行任意代码,因此您甚至不必评估字符串是否会发生不好的事情,您只需读取它即可。

(keyword "foo #=(steal-passwords-and-delete-hard-drive)")

(See (doc *read-eval*)了解如何禁用此行为,但默认情况下会启用 read-eval。)

我认为清理用户输入的一般规则适用于此。精确定义您想要允许的内容,并默认禁止其他所有内容。也许允许像正则表达式这样的东西#"[a-zA-Z0-9*+!-_?]+",可能还有其他字母数字,具体取决于您所说的语言。

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

从用户数据创建 Clojure 关键字的安全隐患? 的相关文章

  • JSON 安全最佳实践?

    在研究这个问题的同时JSON 与 XML http www subbu org blog 2006 08 json vs xml 我碰到这个问题 https stackoverflow com questions 325085 when t
  • Clojure 中 with-local-vars 和 with-bounds 之间的区别

    Clojure 的文档with local vars http clojuredocs org clojure core clojure core with local vars and with bindings http clojure
  • JSON 响应周围的注释块

    我注意到一些 Web 应用程序返回 AJAX 响应 并在注释块中嵌入 JSON 数据 例如 这是一个示例响应 firstName John lastName Smith address streetAddress 21 2nd Street
  • .NET 声明式安全性:为什么 SecurityAction.Deny 无法使用?

    我已经搞乱了大约一天半的时间 现在正在筛选 NET Reflector 和 MSDN 文档 但无法弄清楚任何事情 在 NET 框架中 您可以通过标记如下方法来要求当前的委托人属于一个能够执行方法的角色 PrincipalPermission
  • Clojure Web 应用程序 - 我从哪里开始?

    最近我一直在研究 Clojure 我喜欢这门语言 我想看看我是否可以在其中制作一个小型网络应用程序 只是为了挑战自己 但是 我完全没有设置任何与 Java 相关的 Web 应用程序的经验 事实上 我对 Java 并没有太多的经验 我从哪说起
  • 枚举和 Clojure

    在Java C世界中 人们经常使用枚举 如果我使用的是使用枚举的 Java 库 我可以在它们和关键字之间进行转换 例如 使用 java lang Enum valueOf e aget Ljava lang Enum e getEnumCo
  • Codeigniter - 检查用户是否已登录并存在(它是真实用户)

    我正在尝试在用户登录我的网站时为他们设置会话数据 因此 如果用户存在于数据库中 我将设置一个会话数据 例如 this gt session gt set userdata user exists 1 现在 每次我想检查用户是否存在并已登录时
  • 保护 JSF 应用程序的安全

    我的一位自由职业者朋友邀请我加入他的 JSF 2 0 项目 我正在慢慢加快速度并将各个部分整合在一起 来自 Windows Forms NET 世界 至少可以说 我还有很多东西需要学习 我主要担心的是对于如何保护 JSF 应用程序缺乏明显的
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户
  • TextBoxFor @Value(大写)而不是@value

    这只是出于好奇 为什么这段代码有效 Html TextBoxFor x gt x Age new Value 0 这不是 Html TextBoxFor x gt x Age new value 0 请注意其中的大写 V Value I k
  • ActiveMQ发送ObjectMessage

    我正在使用 ActiveMQ 在我当前的项目中实现消息系统 我需要发送和接收 Java 对象 而不是简单的文本或二进制消息 Java 对象 我的消息对象 根据需要实现了 Serialized 接口 ActiveMQ 的最新版本添加了一些安全
  • JavaScript 中的安全数据

    我必须为 Web 测试创建生成器 使用 HTML 和 JavaScript 测试必须离线和在线进行 正确答案和分数评估必须是生成的测试的一部分 最终用户的分数仅发送到服务器 无法在服务器上进行评估 并且服务器对问题一无所知 它只保存最终分数
  • 如何在 Clojure 中链接 Promise

    在 Scala 中 您可以使用map and flatMap在未来的成功结果上运行函数 val x Future Int val y Future String x map toString 有没有比以下更好的 Clojure 类似物 de
  • 使用 CreateRestrictedToken(LUA_TOKEN) 从提升的进程创建低/中进程

    我正在尝试从提升的进程创建中或低完整性进程 我知道还有其他类似的问题 但它们主要关注使用资源管理器或任务计划程序等解决方法 我想坚持使用CreateRestrictedToken CreateProcessAsUser 我认为一定可以以某种
  • 无法删除 IntelliJ/Cursive 中的括号

    我正在使用 IntelliJ Cursive 编写 Clojure 我发现 删除括号的唯一方法就是将其中的内容完全删除 然后才能将括号删除 例如 假设我有以下代码 list 我只想删除左括号 一旦我在左括号上按退格键 IDE 就会忽略此行为
  • 什么是 API 密钥? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如今 我几乎在每个跨服务应用程序中都看到这个词 API 密钥到底是什么以及它的用途是什么 另外 公共 API 密钥和私有 API 密钥
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 使用 CounterClockwise 和 Eclipse 在 Clojure REPL 中进行评估

    我通常使用 Emacs 但受到启发再次尝试 CCW Eclipse 我有一个 Clojure 测试项目 其源文件 src user clj 包含以下内容 ns user println hi 我有一个 REPL 我从 Window gt S
  • clojure 要求语法原理

    我很难理解 因此记住 此处描述的 clojure require 语法 http clojuredocs org clojure core 1 3 0 clojure core require http clojuredocs org cl
  • 受信任的 1.5 小程序可以执行系统命令吗?

    如果是的话 这个能力有什么限制吗 具体来说 我需要以 Mac OSX 为目标 我以前用过这个在 Windows 系统上启动东西 但从未在 Mac 上尝试过 public void launchScript String args Strin

随机推荐

  • 读取不断增长的文件

    如果我遇到feof 进而stat显示文件已经增长 有没有办法读取添加的数据而不执行fclose and fopen 是的 您可以致电clearerr在文件上 或执行任何查找操作 例如fseek f 0 SEEK CUR
  • 如何使用createTextNode插入HTML实体?

    如果我想将 js 形式的 ascii 符号添加到某个节点 尝试作为TextNode 但它没有将其解析为代码 var dropdownTriggerText document createTextNode blabla and 您无法使用 H
  • 根据 R 中的标准计算平均值

    我想通过引入特定标准来计算 R 中的样本平均值 例如 我有这张表 我只想要 stage 1 或 2 的那些人的平均值 treatment session period stage wage accepted type 1 1 1 1 25
  • 如何解决tensorflow.python.framework.errors_impl.InvalidArgumentError?

    import tensorflow as tf import numpy as np from sklearn model selection import train test split np random seed 4213 data
  • 不支持的 Gauge 版本:此 veuge Inrsion of Gatellij 插件仅适用于 Gauge 版本 >= 0.9.0,规范文件步骤显示为未实现

    意外的仪表插件错误出现 我对仪表完全陌生 并要求创建一个示例仪表项目作为 POC 遵循官方文档 但收到错误 无法遇到 我被困在这里 步骤如下 我的系统中已经配置了 JDK 1 8 并正确配置了环境 系统变量 安装了2019版本的jetbra
  • MVC - InvalidOperationException:未找到用户 ID

    当我使用以下代码注册用户时 POST Account Register HttpPost AllowAnonymous ValidateAntiForgeryToken public async Task
  • 使用 mmap 共享结构数组

    我正在尝试创建一个在父进程和子进程之间共享的结构数组 我在尝试访问数组数据时遇到分段错误 我确信这个问题与我使用指针的方式有关 因为这是我不太熟悉的领域 请注意 我删除了大部分看起来不相关的代码 structure of Registrat
  • ASP(VBScript)有类似PHP的ini_get的功能吗?

    我正在将文件上传 PHP 脚本转换为 ASP PHP 脚本使用 ini get 从 php ini 获取 post max size 变量 POST MAX SIZE ini get post max size 首先 IIS 或 NET 是
  • 如何正确使用Promise.all?

    考虑以下代码 var result1 var result1Promise getSomeValueAsync then x gt result1 x var result2 var result2Promise getSomeValueA
  • jndi与jpa和eclipselink的数据库连接

    我尝试在 Tomcat 5 5 上使用 JNDI 结合 eclipseLink JPA 在 java 中设置数据库连接 我已经在 web xml 和 context xml 中配置了 JNDI 资源 数据库连接使用 JNDI 无需使用 JP
  • 如何在 RSMB 中配置 MQTT-SN 主题 ID

    我的问题是关于通过 MQTT SN 网关使用 MQTT 主题名称和 MQTT SN 主题 ID 来配置 RSMB 使用 Really Small Message Broker 入门 信息对于了解在将两个 Very Small Message
  • Pandas:如果数据框中的值包含另一个数据框中的字符串,则附加列

    假设我有两个数据帧 df1 和 df2 如果 df1 的特定列的值包含 df2 的特定列中的字符串 我想将 df2 的一些列附加到 df1 如果不是 则为 NaN 一个小例子 import pandas as pd df1 pd DataF
  • Carbon:在知道年份和年份的情况下获取一周的开始和结束日期

    Carbon 提供了 weekOfYear 函数来获取一年中的整数周 但是 我需要反过来才能根据年份 一年中的星期来获取日期 Carbon now gt weekOfYear todays week of the year E g 年份 2
  • 我可以使用 jQuery 画一条线吗?

    我有一个网络应用程序 我希望用户通过以下方式画一条线 当他单击Point1然后他移动鼠标 从Point1 to the 当前鼠标位置并且 当点击Point2画出最后的线从点 1 到点 2 我如何使用 jQuery 和 或其插件之一来做到这一
  • 删除整个数组

    我编写了一个用于对整数类型数组进行排序的程序 其中涉及创建另一个相同大小的数组 排序之后 新的数组没有任何用处 所以我想彻底摆脱它 到目前为止 我只发现与删除特定类型元素相关的问题 一些帮助 信息 如果需要 原始数组 A n 新数组 B n
  • 在 python 文件之间共享代码

    假设我有以下文件 classes py main py commands py output py main py是使用以下代码的主文件classes commands and output commands接受定义在中的对象classes
  • Java中如何检查字符串是否包含数字格式?

    我对小程序概念很陌生 我想实现一个应用程序 该小程序有 2 个文本区域和 1 个按钮 第一个文本区域是输入 意味着它包含一些文本 第二个文本区域是空的 如果单击按钮 那么第一个文本区域中的文本将被解析 这里解析意味着第一个文本区域文本包含一
  • 命令行参数参数限制

    语言 C 我必须传递一个巨大的字符串数组 动态构建 作为运行 exe 的参数 我正在考虑通过以下两种方式来实现它 但我没有信心 我可以将其创建为一个由空格分隔的字符串 我可以通过 Process Start 调用 exe 因此 正在运行的子
  • 使用 Facebook 的实时更新 API 接收实时页面提要更新

    因此 每当特定页面上有新帖子时 我希望收到实时通知更新 我为此参考了 facebook 的实时更新 api 指南 https developers facebook com docs graph api real time updates
  • 从用户数据创建 Clojure 关键字的安全隐患?

    假设我获取用户提供的字符串 userstring 并对其进行调用 关键字 userstring 这样做是否存在任何安全问题 如果是这样 缓解这些问题的最佳方法是什么 Per http clojure org reader http cloj