Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有可能在Kwargs中注入python代码吗?如何防止用户输入 我现在正在写我的学士学位论文,并为它创建了一个带有PiggRs和烧瓶的数据库系统。 为了确保数据的安全,我正在处理一个防止SQL注入的文件,因为用户应该能够通过Http请求提交字符串。由于我用来分析Http请求的大多数函数都使用Kwargs和请求中基于JSON的dict,我想知道是否有可能将python代码注入到这些Kwargs中。 如果是的话,是否有办法防止这种情况发生_Python_Security_Flask_Code Injection_Keyword Argument - Fatal编程技术网

有可能在Kwargs中注入python代码吗?如何防止用户输入 我现在正在写我的学士学位论文,并为它创建了一个带有PiggRs和烧瓶的数据库系统。 为了确保数据的安全,我正在处理一个防止SQL注入的文件,因为用户应该能够通过Http请求提交字符串。由于我用来分析Http请求的大多数函数都使用Kwargs和请求中基于JSON的dict,我想知道是否有可能将python代码注入到这些Kwargs中。 如果是的话,是否有办法防止这种情况发生

有可能在Kwargs中注入python代码吗?如何防止用户输入 我现在正在写我的学士学位论文,并为它创建了一个带有PiggRs和烧瓶的数据库系统。 为了确保数据的安全,我正在处理一个防止SQL注入的文件,因为用户应该能够通过Http请求提交字符串。由于我用来分析Http请求的大多数函数都使用Kwargs和请求中基于JSON的dict,我想知道是否有可能将python代码注入到这些Kwargs中。 如果是的话,是否有办法防止这种情况发生,python,security,flask,code-injection,keyword-argument,Python,Security,Flask,Code Injection,Keyword Argument,为了更容易理解我的意思,以下是一些示例请求和代码: def calc_sum(a, b): c = a + b return c @app.route(/<target:string>/<value:string>) def handle_request(target,value): if target == 'calc_sum': cmd = json.loads(value) calc_sum(**cmd)

为了更容易理解我的意思,以下是一些示例请求和代码:

def calc_sum(a, b):
    c = a + b
    return c


@app.route(/<target:string>/<value:string>)
def handle_request(target,value):
    if target == 'calc_sum':
        cmd = json.loads(value)
        calc_sum(**cmd)
因为我不在工作地点附近,我的代码都在那里,所以我无法测试它。老实说,我的代码示例是可行的。但我希望这能传达我的意思

我希望你能帮助我,或者至少把我推向正确的方向。我已经搜索过了,但我能找到的只是关于谁使用kwargs的教程


致以最良好的祝愿

是的,但不是在URL中,尝试使用如下参数localhost:5000/calc_sum?func=a+b&a=1&b=2

要得到这些参数,你需要在烧瓶中进行

@app.route(/<target:string>)
def handle_request(target):
   if target == 'calc_sum':
       func= request.args.get('func')
       a = request.args.get('a')
       b = request.args.get('b')
       result = exec(func)

exec用于以字符串形式执行python代码

谢谢,只要我从未对请求中给定的参数运行exec,我就保存它?python KWARG只是命名值。在您尝试执行或评估该字符串之前,碰巧包含恶意代码的字符串没有任何危险。至少使用默认解码器,json.loads不会做任何危险的事情。有关所使用类型的列表,请参阅此文档页
@app.route(/<target:string>)
def handle_request(target):
   if target == 'calc_sum':
       func= request.args.get('func')
       a = request.args.get('a')
       b = request.args.get('b')
       result = exec(func)