【发布时间】:2014-02-10 09:57:25
【问题描述】:
我正在尝试在 Perl 中使用正则表达式来捕获以下 fork 炸弹命令:
:(){ :|:& };:
以下是我想出的。
:\s*(\s*)\s*{\s*:\s*|\s*:\s*&\s*}\s*;.*:
我同意此正则表达式存在限制。 fork 炸弹命令可以很容易地更改,并且给定的正则表达式不会捕获它。但是,正则表达式是必需的。有没有更好的方法在 Perl 中捕获这个特定的?
【问题讨论】:
-
有什么意义?你稍微改变一下,它仍然是一个分叉炸弹,但正则表达式不会识别它..
-
试图用正则表达式捕获它最终是徒劳的。不要从不受信任的来源运行 shell 命令。
-
您是在尝试使用您的正则表达式捕获完全上述命令还是任何分叉炸弹命令?
-
如果你想捕获它以阻止它运行,我不明白这有多实用。处理此问题的更好方法是在
/etc/security/limits.conf中编辑用户/组限制。 -
“regex is a requirements”——这是作业吗?如果是这样,这更多是关于您对正则表达式元字符的理解,而不是提供安全性。您是否已经逃脱了所有需要转义的角色?否 -
|分隔备选方案,{}是重复运算符,()是捕获组。