【发布时间】:2018-07-27 22:49:52
【问题描述】:
帮助解决以下问题
<?php
if(isset($_POST['MEASURE']))
{
shell_exec("sudo python /var/www/html/lab/mkdir.py");
}
?>
HTML 部分
<form method="post" >
<input type="submit" value="Start Measuring" name="MEASURE" class="search">
</form>
我尝试使用带有按钮的 HTML 页面通过 PHP 执行 Python 脚本 -> 这有效...但是,当我尝试禁用按钮一次单击以避免使用“onClick =”多次启动 Python 脚本时disableButton();" 或类似的脚本将不再执行....
【问题讨论】:
-
您的 Web 服务器的用户可以在没有密码的情况下以 root 身份执行
python,但是您还在担心制作一个简单的 JS sn-p 以在按下按钮时禁用它?老实说,这对我来说是一个非常糟糕的主意。在您解决此问题的安全隐患之前,该按钮应该是您最不必担心的问题。你的python脚本是做什么的?你不能设置它以便它可以被网络服务器的用户执行吗?难道不能用 PHP 重写,这样你就可以完全避免shell_exec吗? -
要正确和安全地阻止用户多次访问某项内容,您必须使用用户的 IP 地址(不是引用多个用户的最佳方式)或强制执行 cookie 会话(就是这样完毕)。如果您正在尝试如此疯狂的事情,那么按钮、链接和其他可点击项是您最不用担心的。至少从 Q 中删除 sudo,即使在那里看到它也很难看。
-
当然这些都是有效的 cmets,但是请不要在意这些方面。它是单台机器上的测试环境。我只是想知道当按钮被禁用时,是什么阻止了提交信号以开始执行脚本。但不禁用它就可以正常工作。