PHP进阶:H5开发中防范注入攻击的实战技巧
|
在H5开发中,PHP常作为后端接口提供数据服务,但若处理不当,极易成为SQL注入、XSS、命令注入等攻击的突破口。前端提交的数据不可信,必须视为潜在危险源进行严格过滤与转义。 对数据库操作,务必弃用拼接SQL字符串的方式。应优先采用PDO或MySQLi的预处理语句(Prepared Statements),将参数与SQL逻辑彻底分离。例如:$stmt = $pdo->prepare("SELECT FROM users WHERE phone = ?"); $stmt->execute([$phone]); 即使$phone含恶意代码(如' OR 1=1 --),也不会改变SQL结构,从根本上阻断SQL注入。
AI生成的趋势图,仅供参考 用户输入若需输出到HTML页面(如JSON响应中嵌入动态文本、错误提示等),必须执行上下文感知的转义。输出到HTML内容区时,用htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');输出到JavaScript字符串中,则先JSON编码再转义引号,或直接使用json_encode($value, JSON_UNESCAPED_UNICODE | JSON_HEX_TAG);写入URL参数时,则用urlencode()。切忌仅用str_replace或简单正则“清洗”,这无法覆盖全部绕过场景。 避免调用eval()、system()、exec()、shell_exec()等危险函数。如确需执行外部命令(如生成缩略图),应使用白名单机制严格限定可执行程序路径,并通过escapeshellarg()或escapeshellcmd()对参数做双重防护。更优方案是改用纯PHP图像处理库(如Gd或Imagick)替代Shell调用。 启用PHP内置安全配置:设置display_errors = Off防止敏感信息泄露,log_errors = On确保异常可追溯;通过open_basedir限制文件访问范围;禁用allow_url_fopen与allow_url_include防范远程代码执行风险。同时,所有API接口应校验HTTP Referer或添加CSRF Token(尤其涉及状态变更操作),并配合CSP头(Content-Security-Policy)抑制内联脚本执行。 定期审查代码中所有$_GET、$_POST、$_COOKIE、$_SERVER等超全局变量的使用点,标注数据流向,对每一处未经过滤的引用发起安全审计。工具辅助不可或缺——使用PHPStan或Psalm静态分析识别危险函数调用,配合OWASP ZAP开展被动扫描,能有效补全人工疏漏。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

