Javascript HTML文本框值属性在XSS攻击中是否安全?

Javascript HTML文本框值属性在XSS攻击中是否安全?,javascript,html,asp.net,xss,Javascript,Html,Asp.net,Xss,我有一个文本框,允许用户输入潜在危险的字符,如(这是一个数学表达式数据输入字段,需要我在文本框上禁用ASP.NET验证)。数据存储在数据库中,稍后检索以显示在页面上。当我在文本框中显示数据时,我的设置如下: "><script>alert('hi')</script> textboxA.Text=表达式其中表达式来自具有潜在危险字符的数据库 无论如何,我试图故意插入类似于警报('hi')的内容,但在设置文本属性(转换为客户端HTML中的值属性)时,我无法执行此脚本

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

"><script>alert('hi')</script>
textboxA.Text=表达式
其中
表达式
来自具有潜在危险字符的数据库

无论如何,我试图故意插入类似于
的内容,但在设置
文本
属性(转换为客户端HTML中的
属性)时,我无法执行此脚本。结果如下所示:

”>

那么,
属性对注入安全吗


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

内置文本框控件会自动对文本属性进行编码。检查输出时,您是否使用了view source或developer控制台。控制台将转义数据显示为未转义,而view source将显示实际产出

无论如何,对textbox值属性的经典攻击是:
“autofocus onfocus=”alert(1)

要将此代码正确插入您的站点,您必须了解代码的工作原理。我不确定ASP.net如何声明输入字段,但只要它不自动编码特殊字符,我的提示应该允许您插入代码

例如,如果输入的代码是这样的(这是HTML站点的输入字段),则
是将脚本插入HTML页面的代码的一部分(假设您正在将值保存到会话中并在文本框中重新显示值)

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

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

从那里您可以插入JavaScript之类的代码。

您不能将字符转义到
“scriptalert(';hi';)/script”
?我无法在文本框中显示字符之前对字符进行HTML编码,因为文本框无法正确呈现HTML代码。例如,文本框中的
按字面意思显示为
,而不是
HTML编码用于删除这些符号。您需要HTML解码才能再次显示它们。如果不希望用户输入sc但是,我认为最简单的方法就是禁止“脚本”这个词。我认为数学家没有理由在公式中使用这个词。我尝试过这种方法,但只有“>inject已被读取。剩余的inject似乎已被丢弃,并且不会出现在生成的html中。必须通过某种方式进行清理,也许您没有使用纯PHP/html/js?Hi@Erlend,请您对此进行更多解释。我在安全测试中收到了这一错误。
"><script>alert('hi')</script>
<input type="text" name="username" value=""><script>alert('hi')</script>