PHP进阶:H5安全策略与防注入实战
|
H5页面与PHP后端交互频繁,若忽略安全策略,极易成为XSS、CSRF和SQL注入的重灾区。防御的核心在于“输入验证、输出编码、权限隔离”三位一体。 对用户输入的任何数据——无论是GET参数、POST表单、URL片段还是AJAX载荷——都必须进行强校验。使用filter_var()配合FILTER_SANITIZE_STRING(已弃用)应改为FILTER_SANITIZE_FULL_SPECIAL_CHARS或更严格的FILTER_VALIDATE_EMAIL、FILTER_VALIDATE_INT等具体类型过滤器;对HTML内容需额外调用htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')转义,防止标签注入。 数据库操作严禁字符串拼接SQL。务必采用PDO预处理语句:绑定参数前,确认参数类型(如PDO::PARAM_INT或PDO::PARAM_STR),避免自动类型转换绕过校验。即使使用ORM,也要禁用原生SQL拼接,所有查询走参数化接口。 H5端需配合设置Content-Security-Policy响应头,例如header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https:; object-src 'none'");限制脚本来源,禁止内联JS执行,大幅降低XSS危害。同时开启X-Content-Type-Options: nosniff与X-Frame-Options: DENY,防MIME混淆与点击劫持。 跨域请求必须校验Origin头,对敏感操作(如删除、支付)强制启用CSRF Token:PHP生成唯一token存入session,并在表单隐藏域及AJAX请求头(如X-CSRF-Token)双通道传递;服务端比对一致才放行。切忌将token暴露于URL或日志中。
AI设计图示,仅供参考 文件上传是高危环节。绝不信任客户端传来的文件名与MIME类型,用pathinfo()提取扩展名后白名单比对(如['jpg','png','pdf']);保存时重命名(如uniqid().md5(sha1_file($tmp)).'.jpg');存储路径脱离Web根目录,或通过index.php路由控制访问权限,禁止直接HTTP访问上传目录。日志记录需剥离敏感字段(如密码、token),错误信息不向H5前端暴露详细堆栈(关闭display_errors,启用log_errors)。定期审查error_log与access_log,配合fail2ban封禁异常IP。安全不是一次性配置,而是贯穿开发、测试、上线的持续习惯。 (编辑:天瑞地安资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

