对于 StackOverflow 来说,这并不是真正的主题。但是,是的,“用户定义的类型限定符”是一个很好的想法,并且有着悠久的历史。它们通常用于污点分析(即,确保用户控制的和潜在的恶意位不会像受信任的位一样使用;确保所有 HTML 在显示之前都已正确转义;诸如此类的事情)。
http://www.cs.umd.edu/~jfoster/papers/toplas-quals.pdf将污点分析作为其主要动机,但也提到了安全信息流(即,确保加密密钥位等敏感信息不会被泄露)不要泄漏到代码的非安全部分)。
也就是说,对于大多数应用程序来说,“用户定义的数据类型”就足够了。您几乎总是可以机械地转换,例如std::string [[tainted]] x转换为Tainted<std::string> x.
Tainted<std::string> x;
cin >> x; // unfortunately, this implicit conversion of Tainted<T>& to T&
// is exactly what we want to avoid
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |