三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> PHP -> PHP防止SQL注入和XSS攻击 -> 正文阅读
 

[PHP]PHP防止SQL注入和XSS攻击

PHP防止SQL注入和XSS攻击 PHP防止SQL注入和XSS攻击
PHP防范SQL注入是一个非常重要的安全手段。一个优秀的PHP程序员除了要能顺利的编写代码,还需要具备使程序处于安全环境下的能力。
说到网站安全,就不得不提到SQL注入(SQL Injection),如果你用过ASP,那么对SQL注入一定有比较深的理解。
PHP的安全性相对较高,这是因为MYSQL4以下的版本不支持子语句,而且当php.ini里的 magic_quotes_gpc 为On 时,提交的变量中所有的 ‘ (单引号), ” (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的转义字符,给SQL注入带来不少的麻烦。
请看清楚:“麻烦”而已,这并不意味着PHP防范SQL注入。书中就讲到了利用改变注入语句的编码来绕过转义的方法,比如将SQL语句转成ASCII编码(类似:char(100,58,92,108,111,99,97,108,104,111,115,116…)这样的格式),或者转成16进制编码,甚至还有其他形式
的编码,这样以来,转义过滤便被绕过去了。
那么,怎样防范SQL注入呢?
a. 打开magic_quotes_gpc或使用addslashes()函数
在新版本的PHP中,就算magic_quotes_gpc打开了,再使用addslashes()函数,也不会有冲突,但是为了更好的实现版本兼容,建议在使用转移函数前先检测magic_quotes_gpc状态,或者直接关掉,代码如下:
// PHP 防范SQL注入的代码 //
// 去除转义字符   
function stripslashes_array($array) {   
  if (is_array($array)) {   
    foreach ($array as $k => $v) {   
      $array[$k] = stripslashes_array($v);   
    }   
  } else if (is_string($array)) {   
    $array = stripslashes($array);   
  }   
  return $array;   
}   
@set_magic_quotes_runtime(0);   
// 判断 magic_quotes_gpc 状态   
if (@get_magic_quotes_gpc()) {   
  $_GET = stripslashes_array($_GET);   
  $_POST = stripslashes_array($_POST);   
  $_COOKIE = stripslashes_array($_COOKIE);   
}
// PHP 防范SQL注入的代码 //
去除magic_quotes_gpc的转义之后再使用addslashes函数,代码如下:
$keywords = addslashes($keywords);
$keywords = str_replace(“_”,”\_”,$keywords);//转义掉”_”
$keywords = str_replace(“%”,”\%”,$keywords);//转义掉”%”
后两个str_replace替换转义目的是防止黑客转换SQL编码进行攻击。
——————————————————
b. 强制字符格式(类型)
在很多时候我们要用到类似xxx.php?id=xxx这样的URL,一般来说$id都是整型变量,为了防范攻击者把$id篡改成攻击语句,我们要尽量强制变量,代码如下:
// PHP防范SQL注入的代码 //
$id=intval($_GET[‘id’]);
当然,还有其他的变量类型,如果有必要的话尽量强制一下格式。
——————————————————
c. SQL语句中包含变量加引号
这一点儿很简单,但也容易养成习惯,先来看看这两条SQL语句:
SELECT * FROM article WHERE articleid=’$id’
SELECT * FROM article WHERE articleid=$id
两种写法在各种程序中都很普遍,但安全性是不同的,第一句由于把变量$id放在一对单引号中,这样使得我们所提交的变量都变成了字符串,即使包含了正确的SQL语句,也不会正常执行。
而第二句不同,由于没有把变量放进单引号中,那我们所提交的一切,只要包含空格,那空格后的变量都会作为SQL语句执行。因此,我们要养成给SQL语句中变量加引号的习惯。
——————————————————
d. URL伪静态化
URL伪静态化也就是URL重写技术,像Discuz!一样,将所有的URL都rewrite成类似xxx-xxx-x.html格式,既有利于SEO,又达到了一定的安全性,也不失为一个好办法。但要想实现PHP防范SQL注入,前提是你得有一定的“正则”基础。
——————————————————
此外,PHP所有打印的语句如echo,print等,在打印前都要使用htmlentities() 进行过滤,这样可以防止Xss。
注意中文要写出htmlentities($name, ENT_NOQUOTES, GB2312)
mysql_real_escape_string() 。
所以SQL语句如果有类似这样的写法:“select * from cdr where src =”.$userId,
都要改成$userId=mysql_real_escape_string($userId) 。
以上,就是PHP防止SQL注入和XSS攻击的方法及源码。
————————————————————————————————————
————————————————————————————————————
————————————————————————————————————
慕课网实战教程
后端:
1、java c++算法与数据结构
2、java Spring Boot带前后端 渐进式开发企业级博客系统
3、java Spring Boot企业微信点餐系统
4、java Spring Security开发安全的REST服务
5、Java Spring带前后端开发完整电商平台
6、Java SSM开发大众点评后端
7、Java SSM快速开发仿慕课网在线教育平台
8、Java 大牛 带你从0到上线开发企业级电商项目
9、Java 开发企业级权限管理系统
10、Java 校招面试 Google面试官亲授
11、Python Flask 构建微电影视频网站
12、Python3 全网最热的Python3入门+进阶 比自学更快上手实际开发
13、Python操作三大主流数据库
14、Python分布式爬虫打造搜索引擎
15、Python高效编程技巧实战
16、PHP 360大牛全面解读PHP面试
17、PHP Thinkphp 5.0 仿百度糯米开发多商家电商平台
18、PHP thinkphp实战开发企业站
19、PHP 高性能 高价值的PHP API接口
20、PHP+Ajax+jQuery网站开发项目式教程
21、PHP7+WEB+Mysql+thinkphp+laravel
22、PHP开发高可用高安全app后端
23、PHP秒杀系统-高并发高性能的极致挑战(完整版)
24、PHP入门:基础语法到实际运用
25、前端到后台ThinkPHP开发整站
26、微信小程序 ThinkPHP5.0+小程序商城构建全栈应用
27、微信小程序入门与实战 常用组件 API 开发技巧 项目实战
28、Laravel5.4快速开发简书网站
29、Yii 2.0进阶版 高级组件 ES + Redis + Sentry 优化京东平台
30、Yii 2.0开发一个仿京东商城平台
前端:
1、前端 所向披靡的响应式开发
2、前端小白入门课程
3、Javascript 让你页面速度飞起来 - Web前端性能优化
4、JavaScript 面试技巧全套
5、对接真实数据 从0开发前后端分离企业级上线项目
6、前端跳槽面试必备技巧
7、腾讯大牛教你web前后端漏洞分析与防御
8、响应式开发一招致胜
9、前端 强力Django+杀手级Xadmin打造上线标准的在线教育平台
10、全网稀缺Vue 2.0高级实战 独立开发专属音乐WebAPP
11、Vue+Django REST framework 打造生鲜电商项目
12、Vue.js高仿饿了么外卖App 前端框架Vue.js 1.0升级2.0
13、Vue2.0+Node.js+MongoDB 打造商城系统
14、vue2.0带你入门Vue 2.0及案例开发
15、Vue、Node、MongoDB高级技术栈全覆盖
16、WebApp用组件方式开发全站
17、WebApp书城开发
18、组件方式开发 Web App全站
数据库:
1、MySQL性能管理及架构设计
2、高性能MySql 可扩展MySQL数据库设计及架构优化 电商项目
移动端:
1、Android常用框架教程Retrofit2 OKhttp3 Dagger2 RxJava2
2、Android通用框架设计与完整电商APP开发
3、Android应用发展趋势必备武器 热修复与插件化
4、Android专项测试-Python篇
5、Android自动化测试-java篇
6、Kotlin系统入门与进阶
7、带领新手快速开发Android App完整版
8、基于okhttp 3 的 Android 网络层架构设计实战
9、零基础入门安卓与界面
10、React native 快速开发轻量级App
11、React Native开发跨平台Github App
12、贯穿全栈React Native开发App
赠送:
1、Nginx 企业级刚需Nginx入门
2、机器学习入门 Scikit-learn实现经典小案例
3、10小时入门大数据
4、ionic2飞速上手的跨平台App开发
5、Sass 基础教程
6、互联网架构原版不加密
7、看得见的算法 7个经典应用诠释算法精髓
8、玩转算法面试 leetcode
详情扣扣   759104513
  PHP 最新文章
PHP中被忽略的性能优化利器:生成器
cakephp搭建配置完成后怎么关闭cake标识
如何配置php session使用redis集群
cakephp怎么默认显示index/index文件
PHP入门怎么选?大学生适合学习吗?
php 回调函数和匿名函数
工厂模式
PHP安装、配置及拓展总结
谈谈php中上传文件的处理
【PHP开发】国外程序员收集整理的 PHP 资源
上一篇文章      下一篇文章      查看所有文章
加:2017-12-05 23:23:46  更:2017-12-05 23:23:48 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年12日历
2017-12-17 17:58:37
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库