整理一些PHP开发安全问题
整理一些PHP开发安全问题
简单介绍
当开发一个互联网服务的时候,必须时刻牢记安全观念,并在开发的代码中体现。PHP脚本语言对安全问题并不关心,特别是对大多数没有经验的开发人员来说。
每当你讲不论什么涉及到钱財事务等交易问题时,须要特别注意安全问题的考虑,比如开发一个论坛或者是一个购物车等。
安全保护一般性要点
不相信表单
对于一般的Javascript前台验证,因为无法得知用户的行为。比如关闭了浏览器的javascript引擎,这样通过POST恶意数据到server。
须要在server端进行验证,对每一个php脚本验证传递到的数据,防止XSS攻击和SQL注入
不相信用户
要如果你的站点接收的每一条数据都是存在恶意代码的。存在隐藏的威胁,要对每一条数据都进行清理
关闭全局变量
在php.ini文件里进行下面配置:
register_globals = Off
假设这个配置选项打开之后,会出现非常大的安全隐患。比如有一个process.php的脚本文件。会将接收到的数据插入到数据库,接收用户输入数据的表单可能例如以下:
<input name="username" type="text" size="15" maxlength="64">
这样。当提交数据到process.php之后,php会注冊一个$username变量,将这个变量数据提交到process.php。同一时候对于不论什么POST或GET请求參数,都会设置这种变量。假设不是显示进行初始化那么就会出现以下的问题(參考:http://www.lai18.com/content/434606.html)
<? php
// Define $authorized = true only if user is authenticated
if (authenticated_user()) {
$authorized = true;
}
? >
此处,如果authenticated_user函数就是推断$authorized变量的值,如果开启了register_globals配置,那么不论什么用户都能够发送一个请求。来设置$authorized变量的值为随意值从而就能绕过这个验证。
全部的这些提交数据都应该通过PHP提前定义内置的全局数组来获取,包含$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST等,当中$_REQUEST是一个$_GET/$_POST/$_COOKIE三个数组的联合变量。默认的顺序是$_COOKIE、$_POST、$_GET。
推荐的安全配置选项
error_reporting设置为Off:不要暴露错误信息给用户,开发的时候能够设置为ON
safe_mode设置为Off
register_globals设置为Off
将下面函数禁用:system、exec、passthru、shell_exec、proc_open、popen
open_basedir设置为 /tmp ,这样能够让session信息有存储权限,同一时候设置单独的站点根文件夹
expose_php设置为Off
allow_url_fopen设置为Off
allow_url_include设置为Off
SQL注入攻击
对于操作数据库的SQL语句。须要特别注意安全性,由于用户可能输入特定语句使得原有的SQL语句改变了功能。类似以下的样例:
扩展阅读
PHP安全编程系列收藏夹收藏了有关PHP安全编程方面的知识,对PHP安全编程提供学习參考
19PHP安全编程:cookie暴露导致session被劫持
44php防止sql注入演示样例分析和几种常见攻击正則表達式
52PHP安全之以Apache模式安装时可能遇到的攻击及解决的方法
整理一些PHP开发安全问题的更多相关文章
- C#.NET微信公众账号接口开发系列文章整理--微信接口开发目录,方便需要的博友查询
前言: 涉及微信接口开发比较早也做的挺多的,有时间的时候整理了开发过程中一些思路案例,供刚学习微信开发的朋友参考.其实微信接口开发还是比较简单的,但是由于调试比较麻烦,加上微信偶尔也会给开发者挖坑,并 ...
- 【Android开发资料分享】自己整理的Android开发资料,非常全面
学习Android以来,不知不觉中收集了大量非常优秀的Android开发资料,一直没有系统的整理,最近抽时间把收藏夹中的资料做了一下整理,现在分享给大家,希望能够帮助到需要的人.这份资料我还会不断的更 ...
- PHP开发安全问题总结
php给了开发者极大的灵活性,但是这也为安全问题带来了潜在的隐患,近期需要总结一下以往的问题,在这里借翻译一篇文章同时加上自己开发的一些感触总结一下. 简介 当开发一个互联网服务的时候,必须时刻牢记安 ...
- ESA2GJK1DH1K开发教程: 来看看最新整理的整个开发板的教程大纲吧
项目开发:教程大纲(测试板型号:ESA2GJK1DH1K) 购买链接: https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.25911deb ...
- 关于RESTful一些注意事项,和自己整理的接口开发规范
https://blog.csdn.net/u013731455/article/details/56278168 最近在研究restful,公司开发要使用,所以自己就去网上找了好些资料,并整理了一套 ...
- 20151028整理罗列某种开发所包括对技术(技术栈),“较为全面”地表述各种技术大系的图表:系统开发技术栈图、Web前端技术栈图、数据库技术栈图、.NET技术栈图
———————————— 我的软件开发生涯 (10年开发经验总结和爆栈人生) 爆栈人生 现在流行说全栈.每种开发都有其相关的技术.您是否觉得难以罗列某种开发所包括对技术(技术栈)呢? 您是否想过: ...
- [整理]前端模块化开发AMD CMD
前端模块化开发的价值 AMD (中文版) CMD 模块定义规范 标准构建 http://seajs.org http://chaoskeh.com/blog/why-seajs.html http:/ ...
- 【待整理】IOS开发之下载
一.传统的下载文件的方式 - (void)downloaderWithUrl:(NSURL *)url { NSURLRequest *request = [NSURLRequest requestW ...
- 2017最新整理移动Web开发遇到的坑
随着前端的热度不断升温,行业对前端的要求越来越高:精准无误的实现UI设计,已成为前端职业更加精细化的一种表现:随着移动互联网的发展.WebApp似乎一种不可逾越的鸿沟:越来越多的企业开始趋势于轻量级的 ...
随机推荐
- Linux安装PHP和MySQL
Linux上安装php运行环境稍微比Windows复杂,没有Windows那么方便的集成环境.技术在于折腾嘛 Linux 版本的可以参考之前发布的Linux安装PHP MongoDB扩展 安装环境 系 ...
- BZOJ 3240 构造矩阵+矩阵快速幂
思路: ax+b cx+d 构造矩阵+矩阵快速幂 (需要加各种特判,,,,我好像加少了- ) //By SiriusRen #include <cstdio> #include <c ...
- java 类和对象1
编写一个Java应用程序,该程序中有3个类:Lader.Circle和主类A.具体要求如下:Lader类具有类型为double的上底.下底.高.面积属性,具有返回面积的功能,包括一个构造方法对上底.下 ...
- IHttpHandler的学习(1)
IHttpHandler的那些事 今晚看了一晚上的IHttpHAndler的知识, 在自定义了Httphandler后,在配置webconfig里配置也是个技术活,什么集成模式,什么asp管道什么的: ...
- NodeJS学习笔记 (32)安全加密-tls
https://github.com/chyingp/nodejs-learning-guide
- jquery validate验证规则重用
当多个控件验证规则相同时,如何避免冗余代码并应用相同规则呢? [1st way. addMethod+addClassRules] 场景:维护学生档案时需要维护父母.监护人.紧急联系人的身份证号码,此 ...
- 陌上开花(CDQ分治)
题解 三维偏序裸题... 一般三维偏序是第一维排序,第二维CDQ分治,第三维树状数组. 模板题还是看代码吧... #include<iostream> #include<cstrin ...
- [Code+#4]最短路 (最短路)
[Code+#4]最短路 题目背景 在北纬 91° ,有一个神奇的国度,叫做企鹅国.这里的企鹅也有自己发达的文明,称为企鹅文明.因为企鹅只有黑白两种颜色,所以他们的数学也是以二进制为基础发展的. 比如 ...
- 【Codeforces Round #421 (Div. 2) B】Mister B and Angle in Polygon
[题目链接]:http://codeforces.com/contest/820/problem/B [题意] 给你一个正n边形; 然后让你在这正n边行中选3个点,组成一个角; 找出角的大小和所给的角 ...
- Nginx 性能调优
原文地址:http://nginx.com/blog/tuning-nginx/ Tuning NGINX for Performance Nginx 性能调优 NGINX is well known ...