假设在属性设置为的input
标记中只允许使用用户提供的双引号。style
display: none
像这样的东西:
<input type="text" style="display: none;" value="aa" autofocus/onfocus="prompt(1)">
既然注入点在style属性后面,那么是否还可以通过触发事件处理程序来获取XSS呢?
假设在属性设置为的input
标记中只允许使用用户提供的双引号。style
display: none
像这样的东西:
<input type="text" style="display: none;" value="aa" autofocus/onfocus="prompt(1)">
既然注入点在style属性后面,那么是否还可以通过触发事件处理程序来获取XSS呢?
您始终可以使用可能用于隐藏输入的相同方法,但这需要相当多的社会工程,因为它很难触发。
但是,您可以使用可能更容易触发的不同事件属性。oninvalid
想到它不需要显示元素:
<form>
<input type="text" style="display: none;" value="aa" oninvalid="alert(1)" pattern="b">
<input type="submit" value="Submit">
</form>
与前面提到的类似accesskey
,您可以onclick
使用元素来触发隐藏label
元素。
当您单击 时<label for="some-id">
,浏览器将查找具有该元素的第一个输入并执行单击,即使隐藏。此功能的一个合法用例是复选框/无线电输入,其中标签用于指示状态,例如此站点的电子邮件设置页面上的频率选择器。
想象一下,你有一个看起来像这样的表格:
<input type="text" style="display:none" value="" onclick="alert(1)">
<label for="field">Name</label>
<input type="text" id="field">
该值" id="field
将导致页面如下所示:
<input type="text" style="display:none" value="" id="field" onclick="alert(1)">
<label for="field">Name</label>
<input type="text" id="field">
如果用户单击“名称”,您将收到警报。用户点击标签的频率取决于很多事情,但某些网站设计可能需要点击标签才能完成给定的任务。
这也严重依赖于页面排序。隐藏输入相对于合法输入的位置很重要,隐藏输入是否具有 id 以及它相对于值的位置。