相关疑难解决方法(0)

htmlspecialchars vs htmlentities关注XSS

我已经看到了很多相互矛盾的答案.很多人都喜欢引用单独的php函数不会保护你免受xss的攻击.

什么XSS确实可以通过htmlspecialchars和什么可以通过htmlentities?

我理解功能之间的区别,但不是你留下的不同级别的xss保护.谁能解释一下?

php xss

28
推荐指数
2
解决办法
2万
查看次数

阻止XSS和SQL注入就像这样容易

问题:防止XSS(跨站点脚本)strip_tags在任何已保存的输入字段上使用并htmlspecialchars在任何显示的输出上运行...并使用PHP PDO预处理语句阻止SQL注入

这是一个例子:

// INPUT: Input a persons favorite color and save to database
// this should prevent SQL injection ( by using prepared statement)
// and help prevent XSS  (by using strip_tags)
$sql = 'INSERT INTO TABLE favorite (person_name, color) VALUES (?,?)';
$sth = $conn->prepare($sql);
$sth->execute(array(strip_tags($_POST['person_name']), strip_tags($_POST['color'])));


// OUTPUT: Output a persons favorite color from the database
// this should prevent XSS (by using htmlspecialchars) when displaying
$sql = 'SELECT …
Run Code Online (Sandbox Code Playgroud)

html php xss sql-injection

8
推荐指数
2
解决办法
1万
查看次数

这两种功能是否过度杀菌?

function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);
    return $var;
}

function sanitizeMySQL($var)
{
    $var = mysql_real_escape_string($var);
    $var = sanitizeString($var);
    return $var;
}
Run Code Online (Sandbox Code Playgroud)

我从一本书中得到了这两个函数,作者说通过使用这两个函数,我可以对XSS(第一个函数)和sql注入(第二个函数)更加安全.这些都是必要的吗?

另外,对于清理,我使用预准备语句来防止sql注入.

我会像这样使用它:

$variable = sanitizeString($_POST['user_input']);
$variable = sanitizeMySQL($_POST['user_input']);
Run Code Online (Sandbox Code Playgroud)

编辑:摆脱第一个函数的strip_tags,因为它没有做任何事情.使用这两个功能是否足以阻止大多数攻击并且对公共站点没问题?

php mysql security xss

7
推荐指数
2
解决办法
870
查看次数

标签 统计

php ×3

xss ×3

html ×1

mysql ×1

security ×1

sql-injection ×1