手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年11月的文章

TIPS:利用rewrite来规避注入漏洞

PHP的新手在开发的时候不可避免的会遇到SQL注入的问题,很多老手在介绍的时候是叮嘱叮嘱再叮嘱啊。其实有个简单的方法就可以减少这种问题的过失。
1、rewrite 规则
2、很多框架的路由
这两种方式都是将GET方法做了一个简单正则处理,也只有符合规则的情况下,GET值才会被赋值到变量中。如果将ID等做一个\d的判断,那么非数字的已经经过一次过滤了。
而且,你在采用rewrite规则的时候,很多sql语句就无法通过URL被传递进来,因为他们不能被正则正常解析。
当然,你也可以想象,如果你的URL是1-0-0-1-0-1-0-1-1-1.html你能知道这些位数是干嘛的不?这种情况用于搜索比较常见,因为搜索的条件会比较复杂,也会比较容易被用来做注入。
如果根据ID取文章之类的,你show-1-1.html别人是知道你的ID为多少,但已经不太容易注入了吧?
新手只是要学习一下rewrite规则了。了解一下正则也好HOHO

Tags: 注入, rewrite

两篇PHP的文章不错

可以值得一看的文章 :
PHP三层结构(上)——简单三层结构
PHP三层结构(下)——PHP实现AOP

在PHP方面已经挺不错了。

其实 在QEEPHP中,已经有实现了。不过没有想象中的那么好。

在第二篇 的文章中,我想过如何用插件来实现这些高级效果?那后来添加的插件又怎么实时加入系统?

QEEPHP和thinkPHP在后来已经有beforeAction,afterACtion。

thinkPHP在最早的model里也有beforeInsert,afterInsert之类的功能,用来处理数据验证。这其实已经有上面介绍的原型功能了。

过多的面向对象,虽然损失的效率,但对于业务逻辑处理来说,却比较方便了。

Tags: aop

挫,godaddy清空购物车

说起来郁闷,godaddy的购物车我真的不知道怎么清空,以至于我刚买的qqapi.com被强制续费了一年,虽然钱没多少,但是不爽啊。
最近又想注册一个域名,可是发现购物车里不知何时又多了一个域名。一下子愣在那里了,于是去google搜索了一下“清空godaddy购物车”,还真的发现了不少与我有同样问题的朋友。
原来,godaddy的购物车清空是在提交订单页面的,首页的购物车弹出窗中没有remove了(记得最早的时候有remove,后来不知道怎么就没有了)。
在提交订单页的表单右下角,居然有一个链接“Empty Cart”。激动啊。终于可以清空godaddy的购物车了。
看来,我还是不够细心,不过从这里我也感觉godaddy是不是有什么想法?这样明显没有用户体验的功能也放在网上,真想不通?难道是逼着你买?
在国内,用户体验越来越被提上日程,连老王也写了表单的用户体验改进的文章:增加表单可用性之提示文字,为什么老外却越来越忽视呢?

顺便,大量更新了godaddy的优惠码,都是7.49左右的。好象现在没有比这个更低的了,以前我是有过对折的。。链接在:godaddy优惠码

Tags: godaddy, 购物车

PHP的面试题

求职的朋友可以看看,不过也不要想着这些就一定有用,有时候工作中的经验也是非常重要的。不过,基本知识点还是非常重要的。至于高阶中的算法问题,如果你不是做特别重要的任务,这些算法你是碰不到的(做网游的除外);高阶中的像册处理,如果你真能处理好了,你单独做一个产品出售也不成问题啊。

1. 基本知识点

  1. HTTP协议中几个状态码的含义:503 500 401 200 301 302。。。
  2. Include require include_once require_once 的区别.
  3. PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等等。
  4. HEREDOC介绍
  5. 写出一些php魔幻方法;
  6. 一些编译php时的configure 参数
  7. 向php传入参数的两种方法。
  8. (mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;
  9. error_reporting 等调试函数使用
  10. 您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?
  11. posix和perl标准的正则表达式区别;
  12. Safe_mode 打开后哪些地方受限.
  13. 写代码来解决多进程/线程同时读写一个文件的问题。
  14. 写一段上传文件的代码。
  15. Mysql 的存储引擎,myisam和innodb的区别。

2. web 架构,安全,项目经验

  1. 介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。
  2. 使用mod_rewrite,在服务器上没有/archivers/567.html这个物理文件时,重定向到index.php?id=567 ,请先打开mod_rewrite.
  3. MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
  4. 写出一种排序算法(原理),并说出优化它的方法。
  5. 请简单阐述您最得意的开发之作
  6. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题
  7. 您是否用过模板引擎? 如果有您用的模板引擎的名字是?
  8. 请介绍Session的原理,大型网站中Session方面应注意什么?
  9. 测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。
  10. 正则提出一个网页中的所有链接.
  11. 介绍一下常见的SSO(单点登陆)方案(比如dedecms整合discuz的passport)的原理。
  12. 您写过的PHP框架的特点,主要解决什么问题,与其他框架的不同点。
  13. 大型的论坛/新闻文章系统/SNS网站在性能优化上有什么区别?
  14. 相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。
  15. 一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…, 如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。

3. unix/linux 基本使用

  1. linux下查看当前系统负载信息的一些方法。
  2. vim的基本快捷键。
  3. ssh 安全增强方法;密码方式和rsa key 方式的配置。
  4. rpm/apt/yum/ports 装包,查询,删除的基本命令。
  5. Makefile的基本格式,gcc 编译,连接的命令,-O0 和-O3区别。
  6. gdb,strace,valgrind的基本使用.

4. 前端,HTML,JS

  1. css盒模型。
  2. javascript中的prototype。
  3. javascript中this对象的作用域。
  4. IE和firefox事件冒泡的不同。
  5. 什么是怪异模式,标准模式,近标准模式。
  6. DTD的定义
  7. IE/firefox常用hack.
  8. firefox,IE下的前端js/css调试工具。

原文来自http://www.162cm.com/archives/972.html
前两天在面试的时候面试官就提出,数据库什么时候关闭比较好?是让他自已关闭还是主动在代码中关闭?

Tags: php, 面试

取消radio的选中状态

一个简单的例子,是懒宝宝让我帮忙的。因为我自己也注意到了,radio在选中后,一般无法取消,查了一下google,发现还是有方法 的。因此,立马解决了:

XML/HTML代码
  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>  
  2. <table class="rs" border="0" cellspacing="0" cellpadding="0">  
  3.           <tr>  
  4.             <td>HIV :阴  
  5.               <input type="radio" name="hiv[0]" value="HIV:阴" union="yin"/>  
  6.               阳  
  7.               <input type="radio" name="hiv[0]" value="HIV:阳" union="yang" /></td>  
  8.             <td>梅毒:阴  
  9.               <input type="radio" name="hiv[1]" value="梅毒:阴" union="yin" />  
  10.               阳  
  11.               <input type="radio" name="hiv[1]" value="梅毒:阳" union="yang" /></td>  
  12.             <td>疱疹:阴  
  13.               <input type="radio" name="hiv[2]" value="疱疹:阴" union="yin" />  
  14.               阳  
  15.               <input type="radio" name="hiv[2]" value="疱疹:阳" union="yang" /></td>  
  16.             <td>淋病:阴  
  17.               <input type="radio" name="hiv[3]" value="淋病:阴" union="yin" />  
  18.               阳  
  19.               <input type="radio" name="hiv[3]" value="淋病:阳" union="yang" /></td>  
  20.           </tr>  
  21.           <tr>  
  22.             <td>非淋:阴  
  23.               <input type="radio" name="hiv[4]" value="非淋:阴" union="yin" />  
  24.               阳  
  25.               <input type="radio" name="hiv[4]" value="非淋:阳" union="yang" /></td>  
  26.             <td>湿疣:阴  
  27.               <input type="radio" name="hiv[5]" value="湿疣:阴" union="yin" />  
  28.               阳  
  29.               <input type="radio" name="hiv[5]" value="湿疣:阳" union="yang" /></td>  
  30.             <td>丙肝:阴  
  31.               <input type="radio" name="hiv[6]" value="丙肝:阴" union="yin" />  
  32.               阳  
  33.               <input type="radio" name="hiv[6]" value="丙肝:阳" union="yang" /></td>  
  34.             <td><a style="cursor:pointer;" id='allyin'>全阴</a> <a style="cursor:pointer;" id='allyang'>全阳</a> <a id='allempty' style="cursor:pointer;">重填</a>   
  35. <script>  
  36. $(function(){  
  37.     $('#allyin').click(function(){  
  38.         $(':input[union="yin"]').attr('checked','checked');  
  39.     });  
  40.     $('#allyang').click(function(){  
  41.         $(':input[union=yang]').attr('checked','checked');  
  42.     });  
  43.     $('#allempty').click(function(){  
  44.         $(':input[union=yang]').each(function(){  
  45.             $(this).attr('checked','checked');  
  46.             var tmp = $(this)[0];  
  47.             tmp.checked = false;  
  48.             tmp = null;  
  49.         })  
  50.     });  
  51. });  
  52. </script></td>  
  53.           </tr>  
  54.         </table>  
因为用jquery的话,选中radion的方法很方便。所以,就尝试用这种方式解决了。。。但是用jquery无法取消checked状态,只能用原生js的方式才行(jquery是把元素都转换为对象,而不是DOM对象)

Tags: jquery, radio, checked