我不确定,我怎么能用字符串真正做出安全的输入.
比如我得到了:
$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漏洞?
亲切的问候,旋风.
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文档:
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |