过滤非法字符PHP怎么写,php过滤非法字符的简单示例

这篇文章主要为大家详细介绍了php过滤非法字符的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧!

代码如下:

/* 512笔记 www.512Pic.com */

class sqlsafe {

private $getfilter = "'|(and|or)\\b.+?(>|

private $postfilter = "\\b(and|or)\\b.{1,6}?(=|>|

private $cookiefilter = "\\b(and|or)\\b.{1,6}?(=|>|

/**

* 构造函数

*/

public function __construct() {

foreach($_GET as $key=>$value){$this->stopattack($key,$value,$this->getfilter);}

foreach($_POST as $key=>$value){$this->stopattack($key,$value,$this->postfilter);}

foreach($_COOKIE as $key=>$value){$this->stopattack($key,$value,$this->cookiefilter);}

}

/**

* 参数检查并写日志

*/

public function stopattack($StrFiltKey, $StrFiltValue, $ArrFiltReq){

if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue);

if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue) == 1){

$this->writeslog($_SERVER["REMOTE_ADDR"]." ".strftime("%Y-%m-%d %H:%M:%S")." ".$_SERVER["PHP_SELF"]." ".$_SERVER["REQUEST_METHOD"]." ".$StrFiltKey." ".$StrFiltValue);

showmsg('您提交的参数非法,系统已记录您的本次操作!','',0,1);

}

}

/**

* SQL注入日志

*/

public function writeslog($log){

$log_path = CACHE_PATH.'logs'.DIRECTORY_SEPARATOR.'sql_log.txt';

$ts = fopen($log_path,"a+");

fputs($ts,$log."\r\n");

fclose($ts);

}

}

?>

注:关于php过滤非法字符的简单示例的内容就先介绍到这里,更多相关文章的可以留意512笔记的其他信息。

关键词:

您可能感兴趣的文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,Spring Boot可以使用过滤器(Filter)来过滤非法字符。可以在过滤器中对请求进行预处理和后处理,比如字符编码转换、参数校验、安全控制等。以下是一个示例过滤器,它可以过滤掉请求中的非法字符: ```java @Component public class IllegalCharacterFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化过滤器 } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; // 进行字符编码转换 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 获取请求参数 Map<String, String[]> parameterMap = request.getParameterMap(); for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) { String name = entry.getKey(); String[] values = entry.getValue(); for (int i = 0; i < values.length; i++) { String value = values[i]; // 过滤非法字符 if (containsIllegalCharacter(value)) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "包含非法字符"); return; } } } // 执行下一个过滤器或目标资源 filterChain.doFilter(request, response); } @Override public void destroy() { // 销毁过滤器 } private boolean containsIllegalCharacter(String value) { // 判断是否包含非法字符,例如 <script>、alert() 等 return value.contains("<script>") || value.contains("alert("); } } ``` 在上述示例中,IllegalCharacterFilter 实现了 Filter 接口,并通过 @Component 注解将其注册为 Spring Bean。在 doFilter 方法中,通过 request.setCharacterEncoding 和 response.setCharacterEncoding 进行字符编码转换,然后获取请求参数并遍历每个参数值,判断是否包含非法字符。如果包含非法字符,则直接返回错误响应,否则执行下一个过滤器或目标资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值