【PHP】Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be remove

Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set ‘always_populate_raw_post_data’ to ‘-1’ in php.ini and use the php://input stream instead. in Unknown on line 0

部署YII1.1框架时出现这个提示

解决方法

  1. 打开php.ini
  2. 找到
;always_populate_raw_post_data = -1

改成

always_populate_raw_post_data = -1
  1. 保存并重启服务就正常了
提供的引用内容未提及常量 `filter_sanitize_string` 被弃用的原因及解决方案。不过在PHP中,`FILTER_SANITIZE_STRING` 常量主要用于过滤字符串,删除或编码HTML标签。 从PHP的发展来看,`FILTER_SANITIZE_STRING` 被弃用可能是因为其功能存在一定局限性。它的过滤机制相对简单,对于复杂的安全场景,如防御XSS攻击等,可能无法提供足够的保护。而且随着安全要求的提高,这种简单的过滤方式可能会留下安全隐患。 解决方案可以根据具体需求来选择。如果是为了防止XSS攻击,可以采用更专业的XSS防御体系,如在输入层进行请求参数过滤,存储层进行入库前内容清洗,输出层进行响应内容转义。例如自定义 `HttpServletRequestWrapper` 类来对输入的参数进行处理: ```java import java.util.Arrays; import org.owasp.html.HtmlSanitizer; // 自定义HttpServletRequestWrapper public class XssRequestWrapper extends HttpServletRequestWrapper { private final HtmlSanitizer sanitizer; public XssRequestWrapper(HttpServletRequest request, HtmlSanitizer sanitizer) { super(request); this.sanitizer = sanitizer; } @Override public String getParameter(String name) { return sanitizer.sanitize(super.getParameter(name)); } @Override public String[] getParameterValues(String name) { String[] values = super.getParameterValues(name); if (values == null) return null; return Arrays.stream(values) .map(sanitizer::sanitize) .toArray(String[]::new); } } ``` 如果只是简单的字符串处理,可以使用PHP的其他字符串处理函数,如 `strip_tags()` 来去除HTML和PHP标签。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值