我已经阅读了Fortify静态检查工具的一些文档.此工具使用的概念之一称为taints.某些来源(例如Web请求)提供以一种或多种方式受到污染的数据,而某些接收器(例如Web响应)要求数据不受污染.
Fortify的好处在于你可以拥有几种类型的污点.例如,您可以标记srand
输出,NON_CRYPTO_RAND
然后要求在使用变量进行加密时不存在此污点.其他示例包括非绑定的检查号码等.
是否有可能使用Haskell或其他编程语言中使用的更强大的静态类型系统来模拟污点,甚至更复杂的类型系统?
在Haskell中,我可以做类型,Tainted [BadRandom,Unbounded] Int
但是使用它们进行计算似乎很困难,因为这种新类型限制了不限制污点的操作.
有没有更好的方法来实现这一目标?有关该主题的任何现有工作?