[英]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.