- 打开php得安全模式 php得安全模式是个非常重要的内嵌的安全机制,能够控制一些php中得函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件得文件。
- 用户组安全
- 安全模式下执行程序主目录 如果安全模式打开了,但是确却是要执行某些程序得时候,可以指定要执行程序得主目录
- 安全模式下包含文件
- 控制php脚本能访问得目录
- 关闭危险函数
- 关闭php版本信息在http头中得泄露
- 关闭注册全局变量
- 打开magic_quotes_gpc来防止sql注入
- 错误信息控制
- 错误日志
常见得PHP网站安全漏洞
对于PHP得漏洞,常见得漏洞有五种,分别是Session文件漏洞、sql注入漏洞、脚本命令执行漏洞、全局变量漏洞和文件漏洞。我说一下这五种漏洞都分别是啥吧
第一种session文件漏洞
Session攻击是黑客最常用到的攻击手段之一。当一个用户访问漏一个网站时,为了免用户每进入一个页面都要输入账号和密码,php设置了session和cookie用于方便用户的使用和访问。
对于session漏洞的防范
从我刚刚说session漏洞的时候可以知道,session攻击最常见的就是会话劫持,也就是黑客通过各种攻击手段获取用户的session id ,然后利用被攻击用户的身份来登陆相应网。为此 这里可以用到 定期更换Session ID,或者是更换Session名称,还有就是透明化的session id进行关闭处理,所谓透明化也就是在http请求没用使用cookies来制定sessionid时,session id使用连接来传递,关闭透明化sessionid。 或是通过url传递隐藏参数
第二种是sql注入漏洞
解决方法有四种 分别是 1.定期更换session id
- 更换session名称
- 对透明化session id 进行关闭处理
- 通过url传递隐藏参数
在进行网站开发的时候,我们由于对于用户输入数据缺乏全面判断或者过滤不严导致服务器执行一些恶意信息,比如用户信息查询等。黑客可以根据恶意程序返回的结果获取相应的信息。这就是sql注入漏洞
对于sql注入的漏洞防范
黑客进行sql注入手段很多,而且灵活多变,但是sql注入的共同点就是利用输入过滤漏洞,所以,要想从根本上防止sql注入,根本解决措施就是加强对请求命令尤其是查询请求命令的过滤。
解决方法 1.把过滤性语句进行参数化处理,
- 在网站开发的时候尽可能少用解释性程序
- 在网站开始时尽可能避免网站出现bug
- 使用正则表达式过滤传入的参数
- 字符串过滤
- 调用函数检查是否包含非法字符
- Jsp页面判断代码
第三种是脚本执行漏洞
脚本执行漏洞常见的原因是由于我们在开发网站时对用户提交的URL参数过滤较少引起的,用户提交的URL可能包含恶意代码导致跨站脚本攻击。脚本执行漏洞在以前的php网站中经常存在,但是随着咱们php版本的升级 这些问题已经减少了和一部分已经不存在了。
对脚本执行漏洞的防范
黑客利用脚本限执行漏洞进行攻击的手段是多种多样的,而且是灵活多变的,对此 必须要采用多种防范方式综合的手段,才能有效防止黑客对脚本执行漏洞进行攻击。这里常用的方法有四种
- 对可执行文件的路径进行预先设定
- 对命令参数进行处理
- 用系统自带的函数库来代替外部命令
- 在数据库的时候尽可能减少使用外部命令
第四种是全局变量漏洞
Php中的去变量会在使用的时候不像其他开发语言那样需要先生,php中的变量可以不经过声明就直接使用,使用的时候系统自动创建,而且也不需要对变量类型进行说明,系统会自动根据上下文环境自动确定变量类型。这种方式可以大大减少程序员变成中出错的概率,使用起来非常的方便。
对全部变量的漏洞防范
以前的版本确实存在这一的问题,但是随着php版本的升级到5.5以后,可以通过对php.ini的设置来实现。
第五种文件漏洞
文件漏洞通常是由于网站开发者进行网站设计时对外部提供的数据缺乏充分的过滤导致黑客利用其中的漏洞在Web进程上执行相应的命令。
对文件漏洞的防范
对于php文件漏洞可以通过对服务器进行设置和配置来达到防范目的,这里具体的操作可以使用
- 把php代码中的错误提示关闭,这样可以避免黑客通过错误提示获取数据库信息和网页文件物理路径
- 对open_basedir尽心设置,也就是对目录外的文件操作进行禁止处理
- 把safe-made设置为开启状态