繁体   English   中英

HTML文本框值属性是否可以免受XSS攻击?

[英]Are HTML textbox value attributes safe from XSS attacks?

我有一个文本框,我希望允许用户输入诸如<>类的潜在危险字符(这是一个数学表达式数据输入字段,需要我在文本框上禁用ASP.NET验证)。 数据存储在数据库中,以后再检索以显示在页面上。 当我在文本框中显示数据时,我将其设置如下:

textboxA.Text = expression; expression来自数据库,带有潜在的危险字符。

无论如何,我尝试过故意插入< script>alert('hi') < /script>但是当设置Text属性(在客户端HTML中转换为value属性)时,我无法执行此脚本。看起来像:

< input type="text" value="<script>alert('hi')< /script>">>< /input>

那么,给出的value属性对注射安全吗?

注意:示例中每个标签之前的空格仅用于StackOverflow,因为它会从问题中删除标签。

为了正确地将此代码插入您的站点,您必须了解代码的工作方式。 我不确定ASP.net如何声明输入字段,但是只要它不会自动编码特殊字符,那么我的技巧应该允许您插入代码。

例如,如果这是您输入的代码的样子(这是HTML站点的输入字段),其中<?php if (isset($_SESSION['username'])) {echo $_SESSION['username'];} ?>代码的一部分,它将您的脚本重新插入HTML页面(假设您将值保存到会话中并在文本框中重新显示该值)

如果您要使用URL将参数传递回表单:

http://www.website.com/index.php?username="><script>alert('hi')</script>

<input type="text" name="username" 
value="<?php if (isset($_SESSION['username'])) {echo $_SESSION['username'];} ?>">

然后,您要注入的代码必须如下所示:

"><script>alert('hi')</script>

注意在此代码开头的"> ,基本上,它的作用是使用"标记结束value="" ,然后使用>结束输入字段。

因此,实际结果将是:

<input type="text" name="username" value=""><script>alert('hi')</script>

从那里您将能够插入诸如JavaScript之类的代码。

内置的文本框控件会自动对text属性进行编码。 检查输出时,您使用的是查看源代码还是开发者控制台。 控制台将转义数据显示为未转义,而视图源将显示实际输出。

无论如何,对文本框值属性的经典攻击将是: " autofocus onfocus="alert(1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM