考虑这段代码:
var_dump(get_headers('http://www.zakon.hr/z/199/Zakon-o-elektroničkoj-trgovini'));
array(4) {
[0]=>
string(24) "HTTP/1.0 400 Bad request"
[1]=>
string(23) "Cache-Control: no-cache"
[2]=>
string(17) "Connection: close"
[3]=>
string(23) "Content-Type: text/html"
}
这段代码中是否有代码注入? 你可以为这段代码注入提供POC吗?
答案 0 :(得分:6)
由于传递给eval
的字符串是常量,没有任何内容替换它们,因此这段代码是安全的。但是,这也是对最佳做法毫无意义的偏离:在这里没有正当理由使用eval
。
假设您希望能够执行re.sub()
以外的操作,一种方法是使用lambdas:
from re import sub
input = request.POST['input']
sub_pattern = {'1': lambda input: sub('pattern1','txt1',input),
'2': lambda input: sub('pattern2','txt2',input)}
sub_pattern['1'](input)