- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在检查一个计算器示例,在该示例中使用了 eval()
这通常是危险的,但这里是该示例的一部分;
if button == "=":
#Check carefully how we using the 'dangerous' eval()
total = eval(str1,{"__builtins__":None},{})
str1 = str(total)
print (str1)
我查了一下,没看懂; eval(str1,{"__builtins__":None},{})
如何不危险?明明是关于{"__builtins__":None},{}
这部分,但是我不明白。
注意:str1
是我们添加数字和符号的字符串,如 4+5
。然后 eval()
处理它。
最佳答案
代码一点也不安全。仅通过访问文字的属性就可以相对容易地访问 builtins
模块。
例如。
result = eval("""[klass for klass in ''.__class__.__base__.__subclasses__()
if klass.__name__ == "BuiltinImporter"][0].load_module("builtins")""",
{"__builtins__":None},{})
assert result is __builtins__
分割:
''.__class__.__base__
是 object
object.__subclasses__()
列出解释器中 object
的所有子类(这包括导入机制使用的类[klass for klass in ... if klass.__name__ == "BuiltinImporter"][0]
-- 选择 BuiltinImporter
类。load_module("builtins")
使用 BuiltinImporter
获取对 builtins
模块的访问权限——这正是您试图限制的访问。关于python - 在此示例中, `eval()` 如何不是 'dangerous',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28100471/
假设有两个对象都继承自 thread 父类“utility thread that uses pthreads”。 class Othread1: public thread { public:
MavenCentral 包含很多 Artifact 。其中一些不应该使用,因为它们有严重的错误,例如威胁安全。 我知道 Nexus Firewall 提供了一项昂贵的服务来分析这些 Artifact
我的 IDE (JetBrains IntelliJ IDEA) 警告我要对方法参数进行同步,即使它始终是对象也是如此。 完整警告内容如下: Synchronization on method par
我读过一篇关于 C++ 中“命名循环习语”的文章:http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Named_Loop 这个成语让我们可以这样写: n
这个问题在这里已经有了答案: 关闭12年前. Possible Duplicate: Can I protect against SQL Injection by escaping single-qu
假设我允许用户链接到他们喜欢的任何图像。该链接将被检查语法正确性、转义等,然后插入 中。标签。 是否存在任何已知的安全漏洞,例如由某人链接到“evil.example.com/evil.jpg”,并
有时我的应用程序中会遇到格式错误的异常。异常情况接二连三地出现,如下: Caused by: java.lang.reflect.InvocationTargetException at sun.re
所以已经开始记录我的 F# 之旅,起初它们看起来相当危险。起初这似乎很聪明: type Card = { Name : string; Phone : string;
在编写调试语句时,我总是添加// DANGER注释,我知道在构建下一版Android应用程序之前必须将其删除。 因此,在构建每个发行版之前,我手动执行CTRL + Shift + F搜索"DANGER
为了查看用户在我的网站上链接到的另一个网站的实时预览,我使用了 iframe。 但是,这可能不是最好的解决方案,因为网站直接加载到我的网站中,每个 JavaScript 元素等都在链接页面上。 我的问
我有一个 Web API 项目。我的端点之一允许进行字符串搜索,其中可能包含特殊字符。 [RoutePrefix("api/Search")] [ValidateInput(false)] // th
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: A potentially dangerous Request.Form value was detected fr
在学校的计算机实验室中,我们使用 fputs 编写了一个程序,编译器返回了一个错误 gets is a dangerous function to use 和一个类似的错误 fputs 但是在家里,当
我正在检查一个计算器示例,在该示例中使用了 eval() 这通常是危险的,但这里是该示例的一部分; if button == "=": #Check carefully how we usin
在“Spark:权威指南”一书中(目前处于早期版本,文本可能会更改),作者建议不要将 Pyspark 用于 Spark 中的用户定义函数: “启动这个 Python 进程是昂贵的,但真正的成本是将数据
我正在开发一个将预安装(作为系统应用程序)在固件上的应用程序。 到目前为止关于 system apps 之间关系的文档,新权限模型,and the protection levels - 我不明白系统
考虑这个最小的例子(我能想到的): struct Bar; struct Foo { Bar* const b; Foo(Bar* b) : b(b) {} }; struct Bar {
我的 MVC .NET Core 项目中的一个页面上有一个下拉列表,我想为其自定义默认验证文本。 --Select Product -- 给出的标准验证错误消息是“需要产品 ID 字段”
这是我第一次使用 SafeHandle。 我需要调用这个需要 UIntPtr 的 P/Invoke 方法。 [DllImport("advapi32.dll", CharSet = CharS
我在 C# 项目中使用 Kendo MVC。 我正在尝试将 k-danger 类添加到剑道按钮。我不知道为什么,但它在 k-primary 类工作的地方不起作用。 这是我的按钮代码: // Thi
我是一名优秀的程序员,十分优秀!