【问题标题】:Sanitize database Input [duplicate]清理数据库输入[重复]
【发布时间】:2016-08-20 05:32:48
【问题描述】:

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

那么我如何清理输入以确保它确实是 java 代码?

【问题讨论】:

    标签: java php database sanitize


    【解决方案1】:

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

    【讨论】:

    • 是的。我只想将java代码保存到数据库中。我想到的是将用户输入写入临时文件并尝试将该文件作为 java 文件执行。我面临的问题是要编译的文件名必须具有相同的java类名。如果不是,编译过程中肯定会出错。到处走走吗?
    【解决方案2】:

    这听起来有些危险(不是在数据库中存储 java 文本代码),但为什么会出现这样的用例。不过……

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 2021-12-25
      • 2016-03-31
      • 1970-01-01
      • 2016-04-23
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多