数据的安全性与一致性中的几个要点

10月 21, 2008 – 11:27 下午

数据完整性的原则:应用程序内部的数据是有用的,换句话说就是引入的数据在边界处被过滤,以过滤后的结果存储,在输出数据的时不再需要做任何处理。在过滤数据时要分清好的,有效的,无效的数据的处理。

基于以上原则在做web程序设计是要注意以下几点:

1.过滤不支持的编码格式
   如果你的整个体系里面用的是utf-8编码,那么你就在数据输入的时候过滤或者转化掉其他编码的字符.
   相关php方法: utf8_encode($input), iconv(”utf-8″,”utf-8″,$str);注后者要装iconv扩展

2.过滤控制字符
  很多时候输入中含有控制字符,这此控制字符虽然是有效的数据,但不是良好的数据。这时候最好把控制字符给过滤掉,可以简单的把小于0×20的 ascii字符过滤之。
   相关方法:
    1. preg_replace(’!\p{C}!u’,”,$data)//清除所有控制字符
    2.preg_replace(’!\r\n?’,'\n’,$input) //统一所有平台的回车,还省空间

3.过滤html
  html的过滤比较头痛,可以用strip_tags()进行过滤,所有的html标签,但是想有选择的过滤html就比较惨了。这时个可以要你写比较复杂的正则表达式。
  注:把所有的外部来源的数据当成是感染过的数据是重要的,只有你自己消除感染的数据才是安全的。
  有时间 可以看一下lib_filter(http://code.iamcal.com/php/lib_filter)

4.防止sql注入攻击:
  原则:不要赋于用户超出他们所需的权限。
  web应用程序永远也不应该需要create,drop,alter权限,如果需要,那么很可能是在基本程序设计上有问题。
  对于只读的数据库,没有必要发放insert ,updata,delete 权限。
  字符串型过滤相关php方法:
  AddSlashes() ,mysql_escape_string()
  整形过滤 : interval(input)
  注意如果用到like或者rlike操作时还要过滤相关字符串中的“%”与“_”两个符号。
 
  数据净化原则:净化代码在物理位置上应该和使用数据的代码相邻,避免过早净化,就可以快速查看代码,确认是否正确进行了转义了数据。

 


  1. 3 Responses to “数据的安全性与一致性中的几个要点”

  2. 安全第一。

    [回复此评论]

    By on Oct 27, 2008

  3. strip_tags 函数可以选择不被过滤的html标记,比如strip_tags($text, ‘‘),可以保留$text里边的p 和 a 标记

    [回复此评论]

    果沟 reply on 11月 1, 2008:

    有道理可以解决一些问题

    [回复此评论]

    By comdeng on Nov 1, 2008

Post a Comment