如何使用PHP防止URL表单字段中的HTML注入?

Bon*_*chi 0 php xss url code-injection

例如,如果我在表单中选择[URL值],将[URL值]保存在数据库中,然后在如下页面中使用它:

<a href="[URL value]" > The Link </a>
Run Code Online (Sandbox Code Playgroud)

如何防止此[URL值]:

http://www.somelink.com"> Evil text or can be empty </a>  ALL THE EVIL HTML I WANT  <a href="
Run Code Online (Sandbox Code Playgroud)

如何保护URL表单文件的这种HTML注入,而不会破坏URL,以防它有效?

Ale*_*min 6

在表单上收到URL时:

  • 使用filter_var(url, FILTER_VALIDATE_URL)以确保URL是有效的格式.
  • 确保URL以http://或以https://(或至少拒绝所有javascript:URL,因为它们可能包含恶意代码)开头
  • 在数据库中插入URL(和其他表单数据)时使用预准备语句,或者正确地转义该数据以防止SQL注入.


显示页面时:

  • 使用htmlspecialchars()逃脱您在HTML中插入的URL(和所有其他文本).