Php 该消毒液中是否有XSS泄漏

Php 该消毒液中是否有XSS泄漏,php,xss,sql-injection,sanitization,Php,Xss,Sql Injection,Sanitization,我想确保我的消毒液没有泄漏。 而且,im只输出硬编码p标签和h1标签内的用户数据 例如: 那么,这是一种安全的方法来保护我免受XSS注射 首先,在将数据插入我的数据库之前,我使用此函数对数据进行sanetize,而在我的数据库中,我使用bind_param function sanitize($str) { return strtolower(strip_tags(trim(($str)))); } sanitize($user_data); - > then gets inser

我想确保我的消毒液没有泄漏。 而且,im只输出硬编码p标签和h1标签内的用户数据

例如:

那么,这是一种安全的方法来保护我免受XSS注射

首先,在将数据插入我的数据库之前,我使用此函数对数据进行sanetize,而在我的数据库中,我使用bind_param

function sanitize($str) {
   return strtolower(strip_tags(trim(($str))));
}

sanitize($user_data); - > then gets inserted into db
然后,当我从数据库中绘制数据时,我用这个来显示它

<p> <?php echo htmlspecialchars($user_data); ?> </p>

那么,这是阻止任何XSS的安全方法吗


谢谢

从安全角度来看,只要您正确地转义/处理您要输出到的介质的数据,就不需要使用“清理”功能:

  • 使用
    htmlspecialchars()
    是输出到html所需的全部
  • 如果需要输出到javascript,请使用
    json\u encode
  • 为数据库使用带绑定变量的准备语句
  • 等等

此外,当Im从文本区域插入文本时,Im使用以下命令:$txt=nl2br(htmlspecialchars($\u POST['freetext']);然后simpy通过

将其显示为旁注:如果您要转义由单引号分隔的HTML属性,请确保设置
ENT\u引号。
。顺便问一下:为什么在插入db之前要剥离标记?@luiscubal您的意思是如果我使用“.$foo.”?我在手册中读到:如果我只使用htmlspecialchars(),是否存在安全风险?毫无疑问。。他已经在使用strip_标签了,那么有必要使用htmlspecialchars吗?反之亦然,他是否需要使用strip_标签?@user1844933坦率地说,我不认为使用strip_标签有什么意义。htmlspecialchars将转换为
@user1844933是的,可能存在
如果我只使用htmlspecialchars(),是否存在安全风险?没有引述etc@user2722667这取决于,如果您回显标记属性的值并使用单引号引用它们,不编码用户输入可能会影响html。