PHP安全性-结合strip_标记()的功能&;htmlspecialchars();
我希望我的论坛用户能够插入链接和其他允许的标签。例如,我希望文章中的以下HTML按照作者的意图显示(即作为功能链接显示):PHP安全性-结合strip_标记()的功能&;htmlspecialchars();,php,html,security,xss,Php,Html,Security,Xss,我希望我的论坛用户能够插入链接和其他允许的标签。例如,我希望文章中的以下HTML按照作者的意图显示(即作为功能链接显示): 但是,我希望保持一定程度的安全性,并且一直在阅读()和()。起初我认为我可以使用带标签的东西,比如: <?php $link_string = strip_tags($link_string, '<a>'); ?> 但是如果我理解正确,strip_标签并不像htmlspecialchars那样保护我。例如,使用特殊字符的错误HTML代码会使
但是,我希望保持一定程度的安全性,并且一直在阅读()和()。起初我认为我可以使用带标签的东西,比如:
<?php $link_string = strip_tags($link_string, '<a>'); ?>
但是如果我理解正确,strip_标签并不像htmlspecialchars那样保护我。例如,使用特殊字符的错误HTML代码会使我易受攻击。链接标记的样式和onmouseover属性也是如此
在清除潜在有害字符和代码的同时,最简单的解决方案是什么?我是否可以将这两个PHP函数结合起来,以一种简单的方式执行此操作 我建议使用stripslashes(),如果这是一个数据库,也可以使用mysql\u real\u escape\u string()
您几乎需要使用功能齐全的HTML解析器和消毒器。总体工作流程如下所示:
)来清理解析的内容,如果它不符合你的需要,HTML净化器网站有一个。我相信默认的HTML净化器配置将保留链接
强制性参考:。虽然这是真的,但问题是关于XSS攻击,而不是SQL注入。此外,我不建议使用这些函数,XSS和SQL注入仍然是可能的。当您说要小心这些属性时,我如何执行疲劳?您只需查看文档,验证默认配置离子剥离它们!:-)
<?php $link_string = strip_tags($link_string, '<a>'); ?>
// without SQL.
function safeData($data) {
$returnData = stripslashes(strip_tags(htmlspecialchars(trim($data))));
return $returnData;
}
// with SQL.
function safeDataMySQL($data) {
$returnData = mysql_real_escape_string(stripslashes(strip_tags(htmlspecialchars(trim($data)))));
return $returnData;
}