编程语言
首页 > 编程语言> > 如何使用PHP清理用户输入?

如何使用PHP清理用户输入?

作者:互联网

是否有一个catchall函数适用于清理SQL注入和XSS攻击的用户输入,同时仍然允许某些类型的HTML标记?

解决方法:

这是一种常见的误解,即用户输入可以被过滤. PHP甚至有一个(现已弃用的)“功能”,称为magic-quotes,它基于这个想法.这是胡说八道.忘记过滤(或清洁,或任何人称之为).

为了避免出现问题,你应该做的很简单:每当你在外国代码中嵌入一个字符串时,你必须根据该语言的规则来逃避它.例如,如果在某些针对MySQL的SQL中嵌入字符串,则必须使用MySQL的函数来转义字符串(mysqli_real_escape_string). (或者,对于数据库,如果可能,使用预准备语句是更好的方法.)

另一个例子是HTML:如果在HTML标记中嵌入字符串,则必须使用htmlspecialchars将其转义.这意味着每个echo或print语句都应使用htmlspecialchars.

第三个例子可能是shell命令:如果要将字符串(例如参数)嵌入到外部命令中,并使用exec调用它们,则必须使用escapeshellcmdescapeshellarg.

等等等等 …

您需要主动过滤数据的唯一情况是,您是否接受预先格式化的输入.例如,如果您让用户发布HTML标记,那么您计划在网站上显示该标记.但是,你应该不惜一切代价避免这种情况,因为无论你如何过滤它,它总是一个潜在的安全漏洞.

标签:php,security,user-input,sql-injection,xss
来源: https://codeday.me/bug/20190910/1802135.html