繁体   English   中英

将使用烧瓶获得的变量作为脚本的输入传递

[英]Passing variables aquired using flask as input to script

我有一个 python 设置,其中一种方法连续返回扫描的 RFID 芯片的 ID。 现在我切断电源线并将扫描仪连接到 wifi 微控制器(ESP8266)。 每次扫描芯片时,都会发出一个包含芯片 ID 的 GET 请求。

我把烧瓶部分放在一个简单的脚本中。 我不需要任何东西返回给 ESP8266。 我只想有一个只返回收集值的类或函数。 我可以将值打印到 stdout,它也出现在 Flask 的日志输出中,但这并没有真正的帮助。 如何将uid传递给不同的脚本,我错过了什么?

有问题的脚本:

from flask import Flask

app = Flask(__name__)

@app.route('/urlpath/<uid>')
def rfiduid(uid):
    print uid

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=False)

您只需要导入另一个并直接从路由内调用它。

from flask import Flask

# A module which contains the stuff you're trying to do
from myothermodule import processRFID

app = Flask(__name__)

@app.route('/urlpath/<uid>')
def rfiduid(uid):
    # Pass the UID to your other module here
    processRFID(uid)

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=False)

如果您的其他代码实际上是一个脚本(从命令行接受输入参数),我建议修改它,使其包含一个可以从 Flask 应用程序调用的函数。 否则,您将需要使用os.system调用或其他方法来执行带有参数的其他脚本。 这是非常不鼓励的,因为您将未经消毒的用户输入(通过 url)传递到您的系统。

@app.route('/urlpath/<uid>')
def rfiduid(uid):
    os.system(' '.join(['script.py', uid]))

如果将 UID 传递为'1 && really_bad_system_command'则可以利用此漏洞

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM