是否有办法防止用户在表单中输入脚本标记?
对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还提供了许多其他转义函数,每种函数都适用于不同的情况,例如纯文本、数字等