- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经阅读了 Fortify 静态检查工具的一些文档。该工具使用的概念之一称为污点。某些来源(例如 Web 请求)提供的数据以一种或多种方式受到污染,而某些接收器(例如 Web 响应)则要求数据不受污染。
Fortify 的好处是您可以拥有多种类型的污点。例如,您可以标记 srand
输出 NON_CRYPTO_RAND
然后要求在将变量用于加密目的时不存在此污点。其他示例包括非绑定(bind)检查号码等。
是否可以使用 Haskell 中使用的更强大的静态类型系统或其他具有更复杂类型系统的编程语言来建模污点?
在 Haskell 中,我可以做 Tainted [BadRandom,Unbounded] Int
之类的类型。但是用它们计算似乎相当困难,因为这种新类型的约束也是不限制污点的操作。
有更好的方法来实现这一点吗?关于该主题的任何现有工作?
最佳答案
不是一个完整的解决方案(=很好的现有方法),但有一些提示:
我知道的关于 Haskell 中安全信息流的两篇论文是 Li and Zdanevic, 2006 (其中一位作者也参与了 Jif )和 Russo et al., 2008 .两者都从相反的角度处理您的“污染”,即通过已知它们的安全程度来标记值,并使用点阵结构对不同的安全级别进行排序——但解决的问题应该与您描述的相同。
第一种方法使用箭头与值一起传递安全信息(类似于 StaticArrow
,我认为),因此动态检查信息流策略(即,如果您尝试访问不允许访问的值,则会发生运行时错误使用权)。
第二个基本上使用一个标识单子(monad),该单子(monad)用一个类型标签索引,指示所包含值的安全级别,因此在编译时运行。但是,为了在不同的安全级别和更复杂的东西之间进行转换,他们使用 IO
包装单子(monad),所以他们的系统又不是完全静态的。正如您在评论中提到的,这里问题的根源似乎是不同标记的单子(monad)不兼容。
当我为一个大学研讨会研究这些论文时,我还重新实现了一些代码,然后玩弄它,试图避免诉诸IO
。 .结果之一是this ;也许这种修改可能是一个有用的实验(虽然我没有做任何真正的测试)。
最后,我真正希望看到的一件事是将这些方法与依赖类型结合起来。将 Agda 的全部力量用于这样的任务似乎是正确的方向......
关于security - 在 Haskell 中从 'Taint mode' 复制 'Fortify static checking tool',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23488252/
我正在开发一个 Chrome 扩展程序来增加网站的便利性。 我可以访问该页面的 DOM,但我还需要与该页面上的“第一方”JS 进行交互,而我无法通过我的扩展程序进行交互。 我可以在页面中插入任意标签(
我读了很多关于 Taint在 Perl 变量、模式等中,例如来自 docs : $AUTOLOAD can now be tainted If you call a subroutine by a t
我正在使用 Parasoft 来分析我的代码。我去这个违规: Tainted parameter of entry point method ("inFileName") has been print
我的操作系统是Fedora 17。最近,出现内核污染警告“kernel bug at kernel/auditsc.c:1772!-abrt”:不应报告此问题(这可能是一个已知问题)。发生内核问题,但
我想使用 api 向(从)k8s 节点添加(删除)污点,代码如下: import ( taints "k8s.io/kubernetes/pkg/util/taints" ) newNode
已经问过类似的问题,问题的原因很清楚,我要的是替代方案或解决方法: 我想做的是从画有 SVG 文档的 Canvas 中获取数据 URL。我已经尝试了各种方法,但 IE9 和 Chrome 不会让我在
我即将完成一个基于 Javascript/HTML5 的游戏,并且我一直在通过使用 Chrome 打开本地文件系统上的 HTML 页面来测试它(我没有在任何地方上传任何内容)。我使用 Chrome 的
我目前正在尝试了解 this JLS section on final fields . 为了更好地理解 JLS 中的文字,我也在阅读 The Java Memory Model作者:Jeremy M
我正在玩形状检测 API ( https://github.com/WICG/shape-detection-api ),基于以下示例:https://wicg.github.io/shape-det
所以我有一个我们正在 Cordova 中为 Android 开发的应用程序。具体来说,用户将加载应用程序将进行实时处理的视频源。问题在于,当尝试在 canvas 元素上执行 toDataURL 时,C
此问题与该主题的许多现有问题类似,但并不完全相同,包括 Tainted canvases may not be exported . 我正在编写一个仅离线应用程序,该应用程序必须保持这种状态并且无法使
我有一个名为“应用程序池”的节点池,其中包含大小为Standard_D2a_v4的节点虚拟机。该节点池设置为“自动缩放”。解决方案中是否存在我在 azure 中污染整个节点池的地方?限制 pod 在该
我有一个名为“应用程序池”的节点池,其中包含大小为Standard_D2a_v4的节点虚拟机。该节点池设置为“自动缩放”。解决方案中是否存在我在 azure 中污染整个节点池的地方?限制 pod 在该
我确实知道参数化查询,但我有几个旧网站,我在这些网站上使用这种方法来清理用户输入: 请注意,%d 周围没有引号。 $tainted 是否有任何值可能导致此类查询产生意外结果?很容易给出语法错误,但我
我可以输入什么 CLI 命令来删除 node-role.kubernetes.io/master:NoSchedule来自 Kubernetes 集群中的主节点的污点? 以下命令失败: [lnxcfg
我正在尝试对其文档 ( https://clang-analyzer.llvm.org/alpha_checks.html#security_alpha_checkers ) 中显示的一些示例执行 c
我尝试在我的函数中实现反转颜色函数,但我不知道如何使用跨源解决这个问题。 我尝试过使用“匿名”,但这也不起作用。所以问题很简单。如何正确使用这个getImageData? var canvas
我正在使用 this example 从 HTML5 视频创建快照。视频托管在第三方服务器上,我无法控制。 所以我想保存图像,但由于安全原因 toDataURL 失败。 这里出现错误:无法在“HTML
我想对使用用户输入污染其参数的函数进行 TaintTracking。示例: fgets(buf, sizeof(buf), stdin); // buf is tainted [...] n = st
我有一个 HTML5 Canvas ,我可以在上面绘制来自 svg 的图像。 HTML JavaScript var DOMURL = window.URL || window.webkitURL
我是一名优秀的程序员,十分优秀!