易截截图软件、单文件、免安装、纯绿色、仅160KB

php对sql injection的防范

对http request过来的数据,凡是含有单引号,双引号,反斜线等都进行加斜线处理。防止进行注入操作。
/*
堵SQL漏洞
*/
function quotes($content){

//如果magic_quotes_gpc=Off,那么就开始处理
if (!get_magic_quotes_gpc()) {
//判断$content是否为数组
if (is_array($content)) {
//如果$content是数组,那么就处理它的每一个单无
foreach ($content as $key=>$value) {
$content[$key] = mysql_real_escape_string($value);
}
} else {
//如果$content不是数组,那么就仅处理一次
$content = mysql_real_escape_string($content);
}

}
//返回$content
return $content;
}
当传递过来的参数是一个id的话。那么我们可以直接用 $id = intval($_GET('id'));进行int型处理(用settype也行)。
网上也有人是对其关键字过滤进行处理的,如:
function inject_check($sql_str){
return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤
}
我觉得此方法不可取是因为我在一个大的输入框里POST过来的数据或多或少都包含这些关键字,难道杀一儆百?虽然这样更安全,但不方便。
所以我采用上一个方法,如果上一个方法有上面不好之处或者疑问,可以留言讨论。:)


相关文档:

常用SQL语句书写技巧

 转自:http://jianghaifeng.blogchina.com/3841741.html
 SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实、最有效的手段,有时甚至是唯一的手段,比如在不允许大幅度修改现有数据库结构的情况下。
通过优化SQL语句提高查询性能的关键是:
 根据实际需求情况,建立合适的索引;
&# ......

SQL:如何把多行查询结果,作为一行返回

CREATE    FUNCTION dbo.UF_GetInvoiceSerials( @bizCode VARCHAR(10))
   RETURNS VARCHAR(100)
AS
BEGIN
   DECLARE @ret AS VARCHAR(1000)
   SELECT @ret=Coalesce(@ret + ', ','') +
         CASE e.ID
     ......

oracle比较快的分页sql

 方案1 适用于oracle9i以上!
select * from
(select row_number() over(order by sendid desc) rn,m.* from xxt_msgreceive m )
where rn <1010 and rn>=1000
方案2
SELECT * from (SELECT A.*, ROWNUM RN from (SELECT * from xxt_msg where sendstatus=1  order by msgid desc) A WHERE ROWNUM < ......

记录一些sql语句oracle的

 select d.code,d.name, sum(w.weight) weight,round(avg(w.price),2) price,sum(w.money) money
from weight_info w left outer join t_dict d on w.productcode=d.code left outer  join t_balancecode b on w.balancecode=b.balancecode where 1=1 and w.operdate>TO_TIMESTAMP('2009-11-2 04:12:32.0', ' ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号