apollo-client-python icon indicating copy to clipboard operation
apollo-client-python copied to clipboard

数据类型转换存在兼容性问题

Open Maasea opened this issue 1 year ago • 3 comments

在#11 中,尝试使用eval来将字符串转换成Python 的内置类型,本身eval是一个危险的函数,可以执行任意字符串的代码,可能会带来安全隐患。

其次,一些转换可能不符合预期,以及出现错误,如下。

eval('1+1') -> 2

eval('192.168.1.1')
  File "<string>", line 1
    192.168.1.1
           ^^
SyntaxError: invalid syntax

另外,在转换发生异常时,不应该返回None值,否则会对调用方产生困扰(明明有配置项,但是get_value却是None

我觉得只保留最基础的类型转换是可行的,比如"false"->False,后续的类型转换由调用者决定。或者采用更加安全的方式,比如通过传入类型参数。但是_convert_type 在 _change_listener 中也有使用,该方法对于整个项目变更较多,具体方案可能有待讨论

Maasea avatar Jan 10 '25 02:01 Maasea