我正在考虑实现差异的不同方法。我可以在PHP中从头开始编写一个wdiff,或者我可以在wdiff上运行shell_exex()
,两个文件返回字符串,解析它的标记并适当替换。我只是担心允许代码在shell上执行的安全性,就像我已解释过的那样。假设传递给wdiff
的所有字符串都是用户输入,在任何情况下都不可信任。
现在,我知道我可以使用像FineDiff这样的库,但老实说我宁愿使用UNIX本机wdiff,但我担心shell_exec总是容易受到任意代码注入,shell代码执行等的影响。是否安全使用?
答案 0 :(得分:0)
阻止shell_exec()
。
如果未对输入进行转义或清理。这可能会导致问题。 例如
shell_exec("wdiff params[1] params[2]");
//can be translate to
shell_exec("wdiff /file1 /file2;echo /etc/passwd");
答案 1 :(得分:0)
那么我们也不应该在网络上有表格,因为,嘿,用户也可能对这些表格做错事。
重点是,如果您有足够的信心使用转义字符串来允许HTML表单,那么在使用命令行之前,您还必须知道自己在做什么:
消毒-这是最重要的问题;倾向于限制可能的值范围。
回显-这里是有效点,可以通过ob_start
函数处理
删除和重命名,以及执行其他程序-如果这是一个问题,那么您会遇到更深层次的问题,因为php系统用户应该限制其功能。
但是同样,如果您可以编写代码来清理用户表单,那么也可以清理输入内容。