Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止XSS的Javascript_Javascript_Xss - Fatal编程技术网

防止XSS的Javascript

防止XSS的Javascript,javascript,xss,Javascript,Xss,有没有一种方法可以通过Javascript自动格式化输入框,在用户尝试单击submit按钮之前阻止XSS 例如,用户在文本框上键入脚本攻击后,javascript会自动将文本框中的值格式化为安全格式 BTW,我不只是依赖于这个过程来防止XSS,只是我们的客户机基础上有一些短语,它触发ASP.NET把它当作XSS。下面是一个确切的例子: 短语:不,没有 XSS只能在服务器时防止,方法是为即将显示的给定上下文格式化不受信任的数据。不,没有 XSS只能在服务器时防止,方法是为即将显示的给定上下文格式化

有没有一种方法可以通过Javascript自动格式化输入框,在用户尝试单击submit按钮之前阻止XSS

例如,用户在文本框上键入脚本攻击后,javascript会自动将文本框中的值格式化为安全格式

BTW,我不只是依赖于这个过程来防止XSS,只是我们的客户机基础上有一些短语,它触发ASP.NET把它当作XSS。下面是一个确切的例子:

短语:不,没有

XSS只能在服务器时防止,方法是为即将显示的给定上下文格式化不受信任的数据。

不,没有


XSS只能在服务器时防止,方法是为即将显示的给定上下文格式化不受信任的数据。

不难,假设您能够准确地找出触发ASP.Net XSS筛选器的原因。例如,这将修复所显示的情况:

<form id="form" onsubmit="fix()">
    <input id="textbox" />
    <input type="submit" />
</form>
<script>
    function fix() {
        var t = document.getElementById('textbox');
        t.value = t.value.replace(/<(\w)/, '< $1');
    }
</script>

请理解,此解决方案不会以任何方式阻止XSS攻击,也不会以任何方式验证输入。XSS攻击只能在服务器端防止。

不难,假设您能够准确地找出触发ASP.Net XSS筛选器的原因。例如,这将修复所显示的情况:

<form id="form" onsubmit="fix()">
    <input id="textbox" />
    <input type="submit" />
</form>
<script>
    function fix() {
        var t = document.getElementById('textbox');
        t.value = t.value.replace(/<(\w)/, '< $1');
    }
</script>

请理解,此解决方案不会以任何方式阻止XSS攻击,也不会以任何方式验证输入。XSS攻击只能在服务器端防止。

您能用JavaScript做些什么吗?当然,它会有效吗?一点也不。使用这种漏洞的人可以轻松绕过JavaScript中的任何内容,以在一两个控制台命令中阻止它。我已经在期待这一点,但如果他们的文本中的一个更改可以允许他们输入正确的值,那么我可以接受。我可以禁用pagevalidation和htmlencode所有进入系统的字符串,但我害怕冒这个风险。我宁愿让注入检查,让它帮助用户以正确的方式输入。你能用JavaScript做些什么吗?当然,它会有效吗?一点也不。使用这种漏洞的人可以轻松绕过JavaScript中的任何内容,以在一两个控制台命令中阻止它。我已经在期待这一点,但如果他们的文本中的一个更改可以允许他们输入正确的值,那么我可以接受。我可以禁用pagevalidation和htmlencode所有进入系统的字符串,但我害怕冒这个风险。我宁愿让注射检查,让它帮助用户输入正确的方式。你是绝对正确的。然而,Martin并不是在问如何防止XSS。他只是问如何阻止ASP.Net的XSS预防系统。@Mark:不,他不是,阻止ASP.Net的预防系统的方法是关闭它。你好,丝琪和马克,我感谢你们的评论,你们都是对的。我清楚地意识到关闭了预防系统,但我仍然希望在允许他们输入上述示例中的值的同时打开它。我只是在预防和不限制人们做他们想做的事情之间取得平衡。我仍在考虑最佳实践,但如果这个解决方案能够防止错误,那么你是绝对正确的。然而,Martin并不是在问如何防止XSS。他只是问如何阻止ASP.Net的XSS预防系统。@Mark:不,他不是,阻止ASP.Net的预防系统的方法是关闭它。你好,丝琪和马克,我感谢你们的评论,你们都是对的。我清楚地意识到关闭了预防系统,但我仍然希望在允许他们输入上述示例中的值的同时打开它。我只是在预防和不限制人们做他们想做的事情之间取得平衡。我仍在考虑最佳实践,但如果这个解决方案能够防止“不”,它就不会。如果禁用JavaScript,将通过发送无效数据;而且,它只修复通过此表单发送的内容。这并不是向服务器提交数据的唯一方法,您可以手动创建请求。数据必须在显示时验证,而不是在输入时验证。这是正确做这件事的唯一方法。其他一切都是错误的。这是无效的,攻击者可以禁用JavaScript并避开过滤器。或者它可以使用Firebug或Groundspeed之类的工具删除事件处理程序。客户端的输入验证不起作用,攻击者可以删除/绕过/取消筛选器。正如@silky提到的,必须在服务器端。这是服务器端预防。注意:我之所以允许这个答案,不是因为它是@silky的最佳实践,完全合理,而是因为它是在不关闭保护asp.net页面的页面验证的情况下所需的解决方案。请注意,除此之外,我还有服务器端预防。不,不会。如果禁用JavaScript,无效数据将通过
H而且,它只修复通过此表单发送的内容。这并不是向服务器提交数据的唯一方法,您可以手动创建请求。数据必须在显示时验证,而不是在输入时验证。这是正确做这件事的唯一方法。其他一切都是错误的。这是无效的,攻击者可以禁用JavaScript并避开过滤器。或者它可以使用Firebug或Groundspeed之类的工具删除事件处理程序。客户端的输入验证不起作用,攻击者可以删除/绕过/取消筛选器。正如@silky提到的,必须在服务器端。这是服务器端预防。注意:我之所以允许这个答案,不是因为它是@silky的最佳实践,完全合理,而是因为它是在不关闭保护asp.net页面的页面验证的情况下所需的解决方案。请注意,除此之外,我还有服务器端预防。