Validating ajax search

时间:2021-08-31 作者:Daryl Liu

是否有方法阻止用户输入<img src=x onerror=alert(test)> 表单的脚本标记?我当前的搜索页面使用ajax在输入字段中输入时加载搜索结果。我已经研究了清理功能,但仍然无法解决。

我还安装了插件:防止XSS漏洞

以下是表格:

<form action="#" id="general-search" autocomplete="off" class="mx-auto">
                <div class="d-md-inline-block d-block position-relative ml-auto mr-md-3 mb-md-0 mb-2 mr-md-0 mr-auto input-wrap"><input type="hidden" name="tag" value="<?php echo $tag;?>" />
                <input type="text" name="search_keyword" placeholder="Search here..." value="<?php echo $keyword;?>"/><span id="clear-search"><img src="<?php echo theme_url_images;?>cancel-gray.png" /></span></div><a href="#" class="btn btn-medium btn-red mx-md-0 mx-auto d-md-inline-block d-block ajax-search mt-md-0 mt-4">Submit (test)</a>
            </form>
谢谢。

1 个回复
SO网友:Tom J Nowell

是否有办法防止用户在表单中输入脚本标记?

escaping. 它是web安全的基本基石之一,在问题代码中完全缺失。

举个例子:

<a href="<?php echo $foo; ?>">
我们怎么知道它实际上是一个URL?你的同事说它应该是一个URL,但我们真的确定吗?如果我们被黑了怎么办?

转义允许我们保证它始终是URL。即使$foo 包含javascript代码,一个电话号码,PI到300位,没关系。逃避强制执行预期,即使结果被破坏和损坏,它也保证是一个URL。

<a href="<?php echo esc_url( $foo ); ?>">
现在我们可以放心了,没有什么东西能从href 属性,则锚定标记不会用于插入任意HTML。它可能包含恶意URL,但始终是URL(http://img%20src=x%20onerror=alert(test) ).

在输出瞬间或尽可能靠近时逃生。

WordPress和PHP还提供了许多其他转义函数,每种函数都适用于不同的情况,例如纯文本、数字等

相关推荐

apiFetch security

我正在编写一些更新选项的代码,使用update_option 使用REST API和apiFetch。我习惯于使用AJAX来完成这项工作,我会在请求中将nonce传递给我的PHP函数,并检查当前的用户功能。使用RESTAPI和apiFetch感觉比使用AJAX好得多,但我觉得在安全性方面我缺少了一些东西。以下是我的想法:register_rest_route( $namespace, \'/update_settings/\', array(