php防攻击方法

简介: php防攻击方法   更多答案 请参考 @如何有效防止XSS攻击/AJAX跨域攻击 我说下防止非法用户的一些常用手段吧 1 前端的js验证: 我认为js验证只是一种用户体验的提升,对普通用户群体的简单限制,所以后台必须要有相应的验证。

php防攻击方法

 

更多答案 请参考 @如何有效防止XSS攻击/AJAX跨域攻击

我说下防止非法用户的一些常用手段吧

1 前端的js验证: 我认为js验证只是一种用户体验的提升,对普通用户群体的简单限制,所以后台必须要有相应的验证。。

2表单中的隐藏域 : 相信大家都遇到过这样的问题,如: 用户从 A 页面 点如 B 页面,B页面是个表单,这个表单中有个隐藏域,用来记录从A页面带来的数据(像id等),用户提交时 在后台修改,新增数据都是依赖这个隐藏域的值,如果这里不做好验证的话,很可能被用户修改隐藏域的值,从而导致垃圾数据。。 我见过一个商城,竟然用隐藏域记录订单信息,用firebug修改价钱后发现下订单的金额竟然是我修改的,好久没关注,不知道对这个问题修改了没有。。

对于以上问题,我一般的做法是 A 页面到B页面时 生成一个 值:

 

  1. [Math Processing Error]数据 .date('Ymdh')); //$数据 为要在B页面隐藏域的值

然后 在将这个生成的 key 也放入 B页面表单的 隐藏域中。
数据提交后, 用相同的加密顺序去加密在判断 如:

 

  1. MD5('FORMKEY' . [Math Processing Error]_POST['key']

我现在一般用这种方式,不知道大家还有没有更好的方式,请分享。。。。。。。

3 ajax :一般ajax请求后台验证比较少,还有最好限制 ajax请求的地址 不能通过浏览器直接访问,不要认为 ajax 请求方式为 post 就 比较安全。

一般我限制的方法为:

 

  1. isset([Math Processing Error]_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'

当然 X_REQUESTED_WITH 也可以伪造,至少多增加了一点验证。

 

 

 

首先分享一个以前用过的一个过滤:

 

  1. function check_str([Math Processing Error]isurl = false)
  2. {
  3. [Math Processing Error]string);
  4. [Math Processing Error]string);
  5. empty([Math Processing Error]string = preg_replace("/&(?!(#[0-9]+|[a-z]+);)/si",'&',$string);
  6. [Math Processing Error]string);
  7. [Math Processing Error]string);
  8. [Math Processing Error]string);
  9. return trim($string);
  10. }

下面截自:http://www.cnblogs.com/my37gs/archive/2011/12/07/2278697.html
1、 验证用户输入的任何数据,保证PHP代码的安全
这里有一个技巧就是使用白名单,所谓白名单就是说:我们要求用户的数据应该是这样的,例如我们要求用户的输入是一个数字,我们就只检验这个值是否是一个数字就行了,而不必检验他到底是什么——其实他有可能是个恶意脚本。

对于这个检验我们不能只在客户端的javascript进行,战地认为JS只是为了提高来访用户的体验而产生的,而不是验证的工具。因为任何一个来 访的用户都可能会,也有可能无意间就禁用了客户端脚本的执行,从而跳过这层验证。所以我们必须在PHP的服务器端程序上检验这些数据。

2、 保护数据库的安全——对即将运行于数据库的Sql语句进行安全性预处理。
任何时候都要对执行前的Mysql语句,进行mysql_real_escape_string操作——该函数的用法请参考PHP手册。诸多PHP的数据库抽象层例如ADODB都提供了类似的方法。

3、 不要依赖不该依赖的PHP设置——环境有时候不可靠
不依赖,magic_quotes_gpc=On,在程序编制的过程,尽量关闭这个配置选项,任何时候判断这个选项后再对用户输入的数据进行处理。切记——PHP v6 中将会删除这个选项。尽量在合适的时候使用addcslashes 系列函数——请参考手册

4、 验证数据来源,避免远程表单提交
不要使用$_SERVER['HTTP_REFERER']这个超级变量来检查数据的来源地址,一个很小的菜鸟黑客都会利用工具来伪造这个变量的数据,尽可能利用Md5,或者rand等函数来产生一个令牌,验证来源的时候,验证这个令牌是否匹配。

5、 保护会话数据,特别是Cookies
Cookie是保存在用户的计算机上的,保存之后任何用户都有可能出于某种原因更改他,我们必须对敏感数据进行加密处理。Md5、sha1都是个的加密方法。

6、 利用htmlentities()预防XSS攻击
对用户可能输入脚本语言的地方的数据进行htmlentities()操,将多数可以产生程序错误的用户输入进行实体化。记住要遵循第一个习惯:在 Web 应用程序的名称、电子邮件地址、电话号码和帐单信息的输入中用白名单中的值验证输入数据。

 

 

 

 

 

 

 

PHP方面:
(1)htmlspecialchars:参数一是要转换的字符串,参数二是设置是否要转换单引号,双引号之类的,参数三是字符串编码设置。
本函数将特殊字符转成 HTML 的字符串格式 ( &....; )。最常用到的场合可能就是处理客户留言的留言版了。
& (和) 转成 & 
" (双引号) 转成 " 
< (小于) 转成 &lt; 
> (大于) 转成 &gt; 
此函数只转换上面的特殊字符,并不会全部转换成 HTML 所定的 ASCII 转换。
(2)htmlentities:会将所有 string 的字符都转成 HTML 的特殊字集字符串。
(3)strip_tags:去掉 HTML 及 PHP 的标记。
(4)sql语句还要再加个mysql_real_escape_string();

 

 

 

 

 

 

php Filter 函数

目录
相关文章
|
3月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
3月前
|
缓存 PHP 开发者
PHP中的自动加载机制及其优化方法
传统的PHP开发中,经常会遇到类文件加载繁琐、效率低下的情况,而PHP的自动加载机制能够很好地解决这一问题。本文将深入探讨PHP中的自动加载机制,介绍其原理及实现方式,并提出了一些优化方法,帮助开发者提升代码加载效率,提高应用性能。
|
3月前
|
JSON PHP 数据格式
PHP curl方法封装
PHP curl方法封装
63 0
|
8天前
|
Java 应用服务中间件 PHP
PHP——调用java文件中的方法
PHP——调用java文件中的方法
19 0
PHP——调用java文件中的方法
|
11天前
|
监控 安全 网络安全
PHP代码审计之简单思路方法
PHP代码审计之简单思路方法
31 1
|
17天前
|
PHP
PHP __call() 方法的一种妙用
PHP __call() 方法的一种妙用
18 0
|
2月前
|
JSON PHP 数据格式
蓝易云 - PHP用CURL发送Content-type为application/json的POST请求方法
在这段代码中,我们首先创建了一个包含我们要发送的数据的数组,并使用 `json_encode`函数将其转换为JSON格式。然后,我们初始化了一个cURL会话,并设置了一些选项,包括POST请求方法、要发送的数据、返回结果和HTTP头部信息。最后,我们执行了cURL请求并关闭了会话。
68 2
|
1月前
|
SQL 缓存 PHP
PHP性能优化的科学方法与实践
在追求网站和应用高性能的当下,PHP作为广泛使用的服务器端脚本语言,其性能优化变得尤为重要。本文将基于数据导向和科学严谨的原则,探讨PHP性能优化的有效策略。首先,通过分析PHP运行机制和性能瓶颈,指出优化的必要性;然后,结合最新的研究成果和实验数据,详细介绍代码层面、配置调优、数据库交互以及缓存应用等方面的具体优化措施;最后,以案例形式展示优化效果,并对PHP性能优化的未来趋势进行展望。旨在为开发者提供一套逻辑严密、实证支持的性能提升方法论。
23 0
|
1月前
|
PHP
php方法
【7月更文挑战第2天】php方法
19 0
|
1月前
|
算法 PHP
轻松实现商品多属性组合:深入理解笛卡尔乘积的 PHP 实现方法
在电商场景中,生成商品属性组合的关键是计算笛卡尔乘积。本文以通俗易懂的方式展示了如何用PHP实现这一功能。使用Laravel时,可直接通过`collect`对象的`crossJoin`方法轻松获取;手动实现则涉及递归算法,通过`CarteSianHandler`类完成。最终结果为一个包含所有属性组合的数组,适用于处理商品的多种属性选项。
22 0