【问题标题】:Sanitize user input if input has html如果输入有 html,则清理用户输入
【发布时间】:2014-04-18 23:13:27
【问题描述】:

我有用户输入,其中包含我需要清理的 html。目前我正在使用:

$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = preg_replace('/[^a-zA-Z0-9_-]/', '', $data);

对于其他输入(无 html)。我允许使用下划线和连字符,因为它们是用户个人资料的 Twitter 用户名。有什么想法可以用里面的 html 标记来清理输入吗?

【问题讨论】:

    标签: php mysql sql sanitization


    【解决方案1】:

    通过其他方式对 HTML 进行清理以保护站点免受 XSS 攻击。根据XSS (Cross Site Scripting) Prevention Cheat Sheet清理HTML取决于你如何打印用户数据,例如:下表显示了不同的场景将应用不同的保护机制:

    php strip_tags 函数可以在某些情况下使用,但它对所有类型的恶意代码并不安全。我建议关注 OWASP。

    【讨论】:

    • 这不是一个完整的答案。此外,我们可以从问题中假设这将按原样显示在 OWASP 上面显示的 HTML/HTML-Body 上下文中的网页上。
    猜你喜欢
    • 2011-07-27
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2016-11-16
    • 2015-10-24
    相关资源
    最近更新 更多