收 藏
投 稿
繁 体
RSS
首 页
运 营
学 院
建 站
论 坛
Web
master8.net
网站运营
欢迎在本站发布信息,在线投递稿件
请点这里
。编辑QQ:4908220,欢迎联系交流。
业界动态
创业故事
推广研究
策划盈利
电子商务
企业平台
站长工具
SEO查询
Whois查询
Pr查询
域名查询
IP查询
网页编辑器
技术学院
投递稿件请点这里:)
网页设计
HTML
XHTML
CSS
Javascript
Frontpage
Dreamweaver
图形图像
PhotoShop
FireWorks
Flash
Coreldraw
程序开发
PHP
ASP
.NET
JSP
CGI
XML
数据库
MySQL
Oracle
MSSQL
Access
综合应用
设计理论
建站系统
服务器管理
常用下载
办公应用
建站服务
如有建站意向,请尽快联系我们,以便安排时间...
QQ:4908220
作品展示
服务范围
服务流程
服务报价
联系方式
付款方式
站长论坛
注册
/
登陆
/
忘密?
交流区
站长酒吧
SEO&推广
网赚交流
建站系统
服务&信息
招聘求职
项目外包
广告发布
网络资源
技术区
网页设计师
界面设计师
WEB程序员
计算机应用
文章正文
» 您的当前位置:
首页
>>
学院
>>
程序开发
>>
PHP
关于magic_quotes
来源:
互联网
| 时间:2006-09-13 | 浏览:
相关评论
|
报告错误
|
发布文章
【字号:
大
|
中
|
小
】 【背景色
】
php函数中有一个get_magic_quotes_gpc()函数,可以得到当前的magic_quotes_gpc配置(0 for off, 1 for on).
在magic_quote=on的情况下(我们的网站基本都是=on),所有$_GET,$_POST,$_REQUEST中的变量值,会自动地在单引号和双引号之前加上\
这个东西有一个好处就是得到的变量值可以方便的生成SQL语句去查询,比如直接...SET field='$val'就可以用。
但是有个问题,我们所有的SQL语句里面的数值并不都是从$_GET,$_POST,$_REQUEST中来的,比如从数据库里取出来,再写回数据库的时候,如果数据中有单(双)引号,..SET field='$val'就会报错,而且还可能引发不可知的错误。
当然,最简单的方法就是清楚地知道各个变量值从哪里来,然后在SQL的时候判断要不要加addslashes()。
但是这样还是有一个问题:现在大家都会用某个SQL类来实现DB的操作,这个类里面的代码并不知道各个变量的来源,所以相信大多数都会加上addslashes()函数的。
这样的话,当$_GET里面比如应该是isn't,PHP里拿到的是isn\'t,再用addslashes(),SQL中就变成了isn\\\'t,存入数据库的就是isn\’t,那么我们的数据就错了。
那么有人就说,那干脆把magic_quote设置成off,不就好了?
不行,并不是所有的人都会注意到这个问题,一些初学者或者是有些粗心的时候,会很随意地写一些类似..SET field='$val'的程序而没有用很好的类库函数,如果magic_quote=off的话,外面的人只要在url上打[...php?val=';drop table ttt;],ttt表就会被自动的删掉。
这是很不安全的。
虽然两边都会出错,但是总体来说magic_quote=on的时候更安全一些,出错也是由于自己的代码导致,不会被别人攻击。
至于上面说的多重\的问题,我们还是要用有addslashes()的类库函数,但是在从$_GET,$_POST,$_REQUEST中得到数据的时候stripslashes()就好了。
这里建议对传来的整形和字符串类型的变量,在程序一开始就作如下转换:
整形:$nProductID = max(0, (int)$_REQUEST['pid']);
字符串类型:$sCategoryName = stripslashes(trim($_REQUEST['catname']))
PHP的global设置应该是off的,毕竟$pid和$_REQUEST[‘pid’]更容易让人区分变量的来源。
还有就是,通知大家要注意这个问题,大家都统一,就不会有这个问题了。
上一篇:
CSS 助记图
下一篇:
Skype出台海外赔偿方案
我要投稿
打印本文
推荐本文
加入收藏
返回顶部
关闭窗口
11-12
用PHP控制您的浏览器cache
11-06
php的连接处理,ignore_user_abort()
09-18
PHP使用mail函数发送邮件标题乱码问题
08-10
PHP Access数据库操作类
07-17
PHP常用正则表达式收集
用PHP控制您的浏览器cache
php的连接处理,ignore_user_abo...
PHP使用mail函数发送邮件标题乱...
PHP Access数据库操作类
PHP 阻止SQL注入式攻击
12条优化php的方法
PHP连接ACCESS数据库
PHP.INI配置文件漫游
PHP+AJAX的实现
关于magic_quotes
more..
» 相 关 评 论
验证码:
站长吧首页
-
网站运营
-
站长学院
-
SEO查询
-
站长论坛
-
建站服务
-
联系本站
-
广告/业务
©2005-2006 站长吧 Master8.NET All rights reserved 陕ICP备05010609号
九州未来科技提供服务器支持
| 网站空间 | 虚拟主机