- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如何避免跨站点脚本攻击?
Cross-site script attacks (或跨站点脚本)是指,例如,如果您的主页上有留言簿,并且客户发布了一些 javascript 代码,这些代码会将您重定向到另一个网站或发送您的 cookie在发给恶意用户的电子邮件中,或者它可能是许多其他可能被证明对您和访问您页面的人真正有害的东西。
我相信它可以做到 fx。在 PHP通过验证表单,但我没有足够的经验进行外汇交易。禁止 javascript 或其他可能伤害您的东西。
我希望你能理解我的问题并能帮助我。
最佳答案
I'm sure it can be done fx. in PHP by validating forms
不是真的。输入阶段完全不是解决 XSS 问题的地方。
如果用户键入,说 <script>alert(document.cookie)</script>
输入,这本身没有错。我只是在这条消息中这样做了,如果 StackOverflow 不允许这样做,我们将很难在网站上讨论 JavaScript!在大多数情况下,您希望允许任何输入 (*),以便用户可以使用 <
字面意思是小于号。
问题是,当您将一些文本写入 HTML 页面时,您必须针对其进入的上下文正确地转义它。对于 PHP,这意味着使用 htmlspecialchars()
在输出阶段:
<p> Hello, <?php echo htmlspecialchars($name); ?>! </p>
[PHP 提示:您可以自己定义一个名称更短的函数来执行 echo htmlspecialchars
,因为每次要将变量放入某些 HTML 时,都需要进行大量输入。]
无论文本来自何处,无论是否来自用户提交的表单,这都是必要的。虽然用户提交的数据是忘记 HTML 编码的最危险的地方,但关键是您正在获取一种格式(纯文本)的字符串并将其插入另一种格式(HTML)的上下文中。任何时候将文本放入不同的上下文中,都需要适合该上下文的编码/转义方案。
例如,如果将文本插入 JavaScript 字符串文字,则必须转义引号字符、反斜杠和换行符。如果将文本插入 URL 中的查询组件,则需要将大多数非字母数字转换为 %xx
序列。每个上下文都有自己的规则;您必须知道在您选择的语言/框架中,对于每个上下文,哪个是正确的功能。您不能通过在输入阶段修改表单提交来解决这些问题 — 尽管许多天真的 PHP 程序员都尝试这样做,这就是为什么这么多应用程序在极端情况下弄乱您的输入并且仍然不安全。
(*:好吧,几乎所有。从提交的文本中过滤掉 ASCII 控制字符是有道理的。允许它们产生任何好处的可能性很小。 此外,当然您还会有您想要执行的特定于应用程序的验证,例如确保电子邮件字段看起来像电子邮件地址或数字确实是数字。但这并不是可以一揽子应用到所有输入来让您摆脱困境的东西。)
关于javascript - 如何避免 "Cross-Site Script Attacks",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3439663/
A Killer Adversary for Quicksort声称有一种方法可以将任何快速排序实现减少到二次时间。我想这意味着它总是会生成一个列表,该列表总是需要 O(n^2) 才能运行。这是在说些
我想将整数矩阵列表转换为数字。我知道lapply对内部结构不友好,但是有没有lapply-solution? mtList = list(matrix(sample(1:10),nrow=5),
我对 Azure AD B2C 的帐户定价和身份验证有几个问题,这些问题都围绕着脚本式 DOS 攻击的问题。 定价页面:https://azure.microsoft.com/en-us/pricin
我对 Azure AD B2C 的帐户定价和身份验证有几个问题,这些问题都围绕着脚本式 DOS 攻击的问题。 定价页面:https://azure.microsoft.com/en-us/pricin
我正在关注基于 spring 框架 3.2.4 的应用程序的本教程 http://springdiaries.blogspot.be/2012/12/web-security-preventing-c
我正在编写一个工具,在给定任何 URL 的情况下,该工具会定期获取其输出。问题是输出可能不是简单轻量级的 HTML 页面(在大多数情况下是预期的),而是一些繁重的数据流(即直接来自/dev/urand
我是一名 iOS 开发人员,开发了一款网络服务应用程序,该应用程序已在 App Store 上架一年。现在,我决定让这款应用跨平台使用 - 从 Android 开始,为此我聘请了一名 Android
代码: void doit() { system("/bin/sh"); exit(0); } int main(int argc, char **ar
题目地址:https://leetcode.com/problems/queens-that-can-attack-the-king/ 题目描述 Onan 8x8 chessboard, ther
我使用了 Rack::Attack 的示例节流代码。 throttle('req/ip', limit: 100, period: 5.minutes) do |req| req.ip unles
为了便于讨论,我们假设我必须创建一个包含具有 INSERT 的 SQL 查询的局部变量: DECLARE @insert NVARCHAR(MAX) SELECT @insert = 'INSER
我陷入了黑客练习。 程序执行时会显示以下内容: Build your own string! Usage: ./4 length command... Each command consist o
当我使用 PHP + Mysql 时,我发现使用与数据库列名称相同的 html 输入名称很方便。这大大简化了 CRUD 操作。 但是,有一个困境。一方面,这种一对一的对应关系简化了事情,但另一方面,攻
我们一直在阅读 Definitive guide to form based website authentication目的是防止快速登录尝试。 这方面的一个例子可能是: 1 次尝试失败 = 没有延
这是我的代码: 类(class): class Player(object): """Base class for the player""" def __init__(self, name, arm
我有一个用 C++ 编写的游戏服务器,我正在使用一个网络库在 Windows 中使用 winsock。我一直在对我的服务器进行压力测试,看看它一次可以接受多少个连接。当我使用我的游戏客户端连接时它工作
我对这个话题的初步理解是,我需要防止一些请求中可用的垃圾字符来避免这些攻击。 我决定在使用之前通过对每个请求参数进行模式匹配来解决这个问题。 Internet 上的大多数帖子都在谈论 Null Byt
如何避免跨站点脚本攻击? Cross-site script attacks (或跨站点脚本)是指,例如,如果您的主页上有留言簿,并且客户发布了一些 javascript 代码,这些代码会将您重定向到
我非常担心我构建的网络应用程序的安全性,因此我一直在使用各种工具来抓取我的每个应用程序。 虽然在编程方面可以完成的所有事情都已经完成,但现成的类(如 Active Record)无法预见,但有一个问题
我知道格式化字符串攻击发生在格式化 I/O 函数需要比提供的参数更多的参数时。 在 C 中, 一个读取内存位置的例子: printf("%x"); // this prints a memory ad
我是一名优秀的程序员,十分优秀!