有可能在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)