通过PHP输入安全

0 php security input

我不确定,我怎么能用字符串真正做出安全的输入.

比如我得到了:

$id = intval($_POST['id']);
$name = $_POST['name'];
$sql->query("UPDATE customers SET name = " . $sql->escape_string($name) . " WHERE id = {$id}");
Run Code Online (Sandbox Code Playgroud)

我确信这$name不够安全.如何保护它,防止XSS漏洞?

亲切的问候,旋风.

Lek*_*eyn 5

XSS保护应该在输出端完成,而不是在存储介质(数据库)上完成.数据库不知道数据的显示位置.如果要存储的数据是文本(如本例所示$name),则应将其存储为文本而不是HTML.

如果你真的想要删除可能的HTML标签,请使用$name = strip_tags($_POST['name']),但正确的方法是防止XSS漏洞在输出端使用htmlspecialchars(或htmlentities)转义它.

如果要使用PHP过滤器函数,下面是一个删除HTML标记的示例:

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
Run Code Online (Sandbox Code Playgroud)

PHP文档: