gpt4 book ai didi

xss - 是否有任何理由清理用户输入以防止他们自己跨站点编写脚本?

转载 作者:行者123 更新时间:2023-12-04 12:14:53 25 4
gpt4 key购买 nike

如果我的字段只会显示给输入它们的用户,是否有任何理由对它们进行跨站点脚本清理?

编辑:所以共识很明确,应该对其进行 sanitizer 。我想了解的是为什么?如果唯一可以查看他们插入站点的脚本的用户是用户自己,那么他唯一能做的就是自己执行脚本,而他已经可以在不涉及我的站点的情况下执行此操作。这里的威胁向量是什么?

最佳答案

理论上:不会。如果您确定只有他们会看到此页面,那么让他们编写任何他们想要的脚本。

问题是他们可以通过多种方式让其他人查看该页面,而这些方式是您无法控制的。他们甚至可能在同事的计算机上打开页面并让他们查看。不可否认,这是一个额外的攻击媒介。

示例:没有持久存储的 pastebin;你发布,你得到结果,就是这样。可以插入一个脚本,该脚本不显眼地添加一个“捐赠”按钮以链接到您的 PayPal 帐户。把它放在足够多的人的电脑上,希望有人捐赠,...

我同意这不是最令人震惊和最现实的例子。然而,一旦你不得不用“这是可能的,但听起来还不错”来捍卫与安全相关的决定,你就知道你越过了一定的界限。

否则,我不同意“从不相信用户输入”之类的答案。没有上下文,这种说法毫无意义。关键是如何定义用户输入,这是整个问题。在语义上如何信任?语法上?达到什么水平;只是大小?正确的 HTML?
Unicode字符的子集?答案视情况而定。一个裸露的网络服务器“不信任用户输入”,但今天有很多网站被黑客入侵,因为“用户输入”的界限取决于你的观点。

底线:避免让任何人对您的产品产生任何影响,除非昏昏欲睡的非技术消费者清楚什么和谁。

这从一开始就排除了几乎所有的 JS 和 HTML。

P.S.:在我看来,OP 首先提出这个问题值得称赞。 “不要相信你的用户”不是软件开发的黄金法则。这是一个不好的经验法则,因为它太具有破坏性了;它削弱了定义产品与外部世界之间可接受交互边界的微妙之处。这听起来像是一场头脑 Storm 的结束,而它应该开始一个。

软件开发的核心是为您的应用程序创建一个清晰的界面。该接口(interface)内的所有内容都是实现,其外部的所有内容都是安全性。让一个程序做你想让它做的事情是如此的专注,人们很容易忘记让它不做任何其他事情。

将您尝试构建的应用程序描绘成精美的图片或照片。使用软件,您尝试近似该图像。您将规范用作草图,所以已经在这里,您的规范越草率,您的草图就越模糊。不过,您的理想应用程序的轮廓非常薄!您尝试使用代码重新创建该图像。小心地填充草图的轮廓。从本质上讲,这很容易。使用宽画笔:草图是否模糊,这部分显然需要着色。在边缘,它变得更加微妙。这是当你意识到你的草图并不完美的时候。如果你走得太远,你的程序就会开始做你不希望它做的事情,其中​​一些可能非常糟糕。

当你看到一条模糊的线条时,你可以做两件事:仔细观察你的理想图像并尝试改进你的草图,或者停止着色。如果你做后者,你很可能不会走得太远。但是,您最多也只能对您的理想程序做出粗略的近似。无论如何,您仍然可能不小心越线!只是因为你不确定它在哪里。

你有幸仔细观察那条模糊的线并尝试重新定义它。你越接近边缘,你就越确定它在哪里,越不可能越过它。

无论如何,在我看来,这个问题不是安全问题,而是设计问题:你的应用程序的边界是什么,你的实现如何反射(reflect)它们?

如果“从不相信用户输入”是答案,那么你的草图就很模糊。

(如果您不同意:如果 OP 适用于“testxsshere.com”怎么办?boom!check-mate。)

(有人应该注册 testxsshere.com)

关于xss - 是否有任何理由清理用户输入以防止他们自己跨站点编写脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com