清理数据库输入


Sanitize database Input

我有一个表单数据,从用户接收java代码,并将其存储在数据库中。

那么我如何对输入进行消毒以确保它确实是java代码呢?

你想用它实现什么,你想把Java代码保存到数据库吗?如果你想做这样的事情,那么你需要正则表达式我想,这是我想到的第一件事

这听起来有些危险(不是在DB中存储java文本代码),但是为什么会出现这样的用例呢?然而……

如果您不打算了解Java语言的所有方面,那么您可能需要研究一下BeanShell。Beanshell可以获取java源代码并在不编译的情况下对其进行评估。您可以不执行代码而"获取源代码"。如果通过,那么它就是java代码,如果没有通过,那么它就不是java代码。但是,Beanshell不接受新Java版本的所有现代语法和结构。

验证它确实是java代码的一种简单方法是尝试编译它(如果代码需要依赖项,这当然会变得混乱)。如果您采用这种方法,那么请确保在DMZ计算机/用户中进行编译(我不知道编译不受信任的代码有任何风险,但可能有)....只是不要在编译后运行代码!