Ced*_*tin 1 lisp security clojure
编辑3自从我提出这个问题以来,已经发生了一些新的发展.基本上我是不是"看花眼"和Clojure编写的web应用已经被认为是脆弱的,这促使用Clojure 1.5的变化和非常的Clojure的谷歌群体热烈的讨论.
以下是黑客新闻中关于Clojure 1.5变化的人的引用:
另一个有趣的事情是read-eval和EDN的突然增强[2].这主要是因为Ruby/Rubygems与YAML漏洞一起出现了恶劣的天气,这引发了关于Clojure读者应该如何默认行动的激烈讨论.
已经发现了孔并且为了确定Clojure已经太晚了,所以read-eval仍然默认设置为true(因为否则会破坏太多东西).任何在Clojure中解析输入的人都不应该使用默认的读取函数,而应该使用EDN函数.
所以我当然没有看到事情,并且人们花了很长时间(甚至18个月)才找到攻击常见Clojure webapp堆栈的方法.
编辑2我不知道它,但我的问题是以下问题的愚蠢(已被描述为'杀手问题'):Lisp数据安全/验证
如果有人对这个问题的答案感兴趣,我建议他们打开上面的问题并阅读Lisp大师那里的答案,而不是那种类型的"没有什么可看的,继续前进,就像PHP或JavaScript".
编辑:我想知道,不管怎么样,因为它是Lisp,攻击者将"数据"(即"恶意用户输入的用户输入")转换为"代码"会"更容易".例如,在开始"评估"/解析或任何数据之前,是否需要转义/替换用户输入中的所有括号?
原始问题
我还在阅读关于Lisp的内容,我突然想知道,这整个"代码是数据"/"数据是代码"的事情,Lisp是否需要执行输入清理才能防止攻击?
我特意想到了webapps,比如当用户做一些HTTP POST时.
如果他发送的数据包含以下内容,该怎么办?
This is some malicious (eval '(nasty-stuff (...)) or whatever.
Run Code Online (Sandbox Code Playgroud)
(我不是Lisp程序员,它只是我想到的一个例子,它并不意味着实际意味着代码)
由于Lisp的工作方式,有什么特别要记住的吗?例如,如果一些黑客黑客知道某个网络服务器在Clojure上运行,他是否可以利用这个事实然后在括号中注入"代码",然后在网络服务器上进行评估?
当从Lisp接收/解析用户数据(因此可能制作数据)时,这是一个问题吗?
我在Lisp中编写了一些webapp(即Common Lisp),以下是我记住的事情:
read,你应该始终设置*read-eval*到nil任何不可信数据基本上,就是这样.此外,由于它是Lisp,它通常会使您的系统不易受到攻击,因为:
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |