修剪表单输入和转义字符是否是一种好习惯?

| 像这样,
$type = mysqli_real_escape_string($dbc, trim($_POST[\'type\']));
修饰会提高安全性还是mysqli_real_escape_string已经足够了?     
已邀请:
mysqli_real_escape_string是不够的。 对表单输入执行此操作是非常糟糕的主意 无论如何都不应该使用它 说到转义,mysql [i] _real_escape_string不是make-my-data-magically-safe()函数,而是仅转义字符串定界符,以防止字符串被破坏。因此,它对数字没有帮助。 实际上,它与注入攻击无关,因为无论任何攻击,都应使用此函数,而仅仅是使您的字符串符合SQL语法规则。 而且它对查询的任何其他部分都没有帮助。 而且,它与“表单输入”或一般的表单无关。它是与数据库相关的功能,而不是与表单相关的功能。它是要转义到查询的字符串,别无其他。 无论如何都不应该使用它,因为您必须使用mysqli准备好的语句。 而且,是的-trim()与安全性无关,而是使数据看起来更整洁。     
mysqli_real_escape_string将仅转义该字符串以防止注入攻击。如果您不希望有空白,那么也应该修剪一下。     
使用mysqli_real_escape_string足以防止注入数据库。 向用户显示发布的值时,您应确保在上面使用htmlentities。     
修剪字符串的空格不会提高安全性。 转义字符串应该足以防止sql注入。     
您的示例将有助于防止SQL注入,因为任何\“特殊字符\”将被转义(因此\“变为\\\”,依此类推),但不会阻止XSS(跨站点脚本)仍包含<和>之类的HTML字符 您可以使用以下代码来帮助防止两种类型的攻击
<?php
    //Get the variable
    $userValue = $_GET[\'value\'];
    //Remove any preceding/leading whitespace
    $userValue = trim($userValue);
    //Convert any HTML characters to their entity value
    $userValue = htmlspecialchars($userValue);
    //Escape any SQL special characters
    $userValue = mysqli_real_escape_string($dbc, $userValue);
?>
有关XSS的更多信息,请查看此链接https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) 另一个有用的资源是此PHP库,它旨在过滤任何用户输入,以防止(几乎)XSS的所有方法http://htmlpurifier.org/     

要回复问题请先登录注册