gpt4 book ai didi

security - Lisp 应用程序和网络应用程序是否需要特殊的输入清理?

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:17 25 4
gpt4 key购买 nike

EDIT 3 自从我提出这个问题以来,已经发生了一些新的发展。基本上我没有“看到东西”,而且发现用 Clojure 编写的 Web 应用程序容易受到攻击,这促使 Clojure 1.5 发生变化,并且 非常 在 Clojure Google 组中进行了激烈的讨论。

以下是 Hacker News 上某人关于 Clojure 1.5 中变化的引述:

Another slightly interesting thing is the sudden enhancement to read-eval and EDN[2]. That's mainly because of the rough weather Ruby/Rubygems was in with the YAML-exploits, which caused a heated discussion on how the Clojure reader should act by default.

漏洞已经被发现,现在真正修复 Clojure 已经太晚了,所以 read-eval 仍应默认设置为 true(因为否则它会破坏太多事物)。任何在 Clojure 中解析输入的人都不应使用默认的读取函数,而应使用 EDN 函数。

所以我当然没有看到任何东西,人们很快(甚至不到 18 个月)就找到了攻击常见 Clojure web 应用程序堆栈的方法。

EDIT 2 我不知道,但我的问题是以下问题的骗局(已被描述为“ killer 问题”):Lisp data security/validation

如果有人对这个问题的答案感兴趣,我建议他们打开上面的问题并阅读 Lisp 专家在那里做出的答案,而不是 “这里没什么可看的,继续前进,就像 PHP 或 JavaScript 一样”

编辑:我想知道,不知何故,因为它是 Lisp,攻击者是否会“更容易”转换“数据”(即“使用恶意的精心设计的用户输入”)意图”)变成“代码”。例如,在开始“评估”/解析或任何数据之前,我是否需要转义/替换用户输入中的所有括号?

原始问题

我仍在阅读有关 Lisp 的文章,突然我想知道,有了这整个“代码就是数据”/“数据就是代码”的东西,Lisp 是否需要执行输入清理以防止攻击?

我特别想到了网络应用程序,比如当用户执行一些 HTTP POST 时。

如果他发送的数据包含如下内容怎么办:

This is some malicious (eval '(nasty-stuff (...)) or whatever.

(我不是 Lisp 程序员,这只是我脑海中的一个例子,并不意味着实际上是卑鄙的代码)

由于 Lisp 的工作原理,有什么特别需要记住的吗?例如,如果一些黑暗面黑客知道某些网络服务器正在 Clojure 上运行,他能否利用这一事实然后注入(inject)“括号之间的代码”,然后在网络服务器上对其进行评估?

从 Lisp 接收/解析用户数据(以及因此可能制作的数据)时,这是否是一个问题?

最佳答案

我用 Lisp(即 Common Lisp)编写了一些 Web 应用程序,以下是我牢记的事情:

  • 如果您使用read,对于任何不受信任的数据,您应该始终将*read-eval* 设置为nil
  • 如果你正在处理代码生成——例如,HTML、JS、CSS 或 SQL 生成——这在 Lisp 领域很常见,你不应该忘记使用相应库提供的清理工具(不是使用原始输入字符串)

基本上,就是这样。此外,由于它是 Lisp,它通常使您的系统不易受到攻击,因为:

  • 没有标准攻击(因为 Lisp 的使用相对较少)
  • 该系统在默认设置方面相当安全——这并不是唯一的,但许多面向网络的语言(首先是 PHP)在默认情况下存在不安全问题,尽管现代框架已缓解这种情况

关于security - Lisp 应用程序和网络应用程序是否需要特殊的输入清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7911288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com