发新话题
打印

防SQL注入N法.

本主题由 石头 于 2008-3-22 00:08 下沉

防SQL注入N法.

防SQL注入N法.
9 W/ g+ s8 b" q; H" d6 H+ f+ K网站要做足安全, 特别是对防SQL注入, 因为大多数程序员都会很粗心大意而导致网站被黑
6 i& A5 g3 K. L/ H& Hphp脚本:
! t6 @) x3 V0 i3 B/ c  t基本上php本身就带有类似功能的函数了, 比如mysql_real_escape_string, addslashes等.
& A& n8 M% S3 Q9 s/ M+ Z8 D大多数虚拟主机商比如耐思尼克(www.nicenic.com/?s=jiangyanfei)都会开启了magic_quotes_gpc这个选项, 那提交数据时, 会自动执行了addslashes这个函数, 这样就可以杜绝大多数的注入了, ]# L/ S: G. m: ]
另外因为mysql是不分数字还是文本,都可以用''来括住, 所以建议在写sql的时候, 参数都用''来括起来2 e% r; w! X( A# E, r2 A1 X
使用方法如下:! K4 r- _5 ]6 b2 {1 Y* Y
$query = mysql_real_escape_string("SELECT * FROM products WHERE name='$productname'");2 A, |! ~4 i% {; O
asp脚本:
7 v: ~5 x" D; n5 ^# @" T0 E$ ]' v' xFUNCTION CHECKSTR(ISTR)) p" d9 I0 T9 O# c1 R/ B
DIM ISTR_FORM,SQL_KILL,SQL_KILL_1,SQL_KILL_2,ISTR_KILL ( }* {+ Q8 I" ~- O/ `, x) f
IF ISTR="" THEN EXIT FUNCTION; E7 a( n& `& E  }- c
ISTR=LCase(ISTR)" P& p1 q2 D% z" _
ISTR_FORM=ISTR
# [! @( R) K3 s, a% t# ESQL_KILL="'|and|exec|insert; I, |7 |% w; O; w
|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|set|;|from|="
* F/ l8 L5 G* E2 W, t$ J' WSQL_KILL_1=SPLIT(SQL_KILL,"|")
( k$ A6 d/ H: Q! lFOR EACH SQL_KILL_2 IN SQL_KILL_1  p+ r. H; A! y; q" l% k
ISTR=REPLACE(ISTR,SQL_KILL_2,"")' X0 }  {! e+ u. k/ m+ L% `, T. n5 N
NEXT' p+ `( j, q7 c/ F! r3 f$ {
CHECKSTR=ISTR( q- d! Q8 t  ?* f" h8 O! j
ISTR_KILL=REPLACE(ISTR_FORM,ISTR,"")
5 E! I( G( e& ~+ m( QIF ISTR<>ISTR_FORM THEN
2 Q6 ^& j/ U( {* ^& n! X" mRESPONSE.WRITE "<script>alert('警告: 您提交的数据["&ISTR_FORM&"]中含有非法字符 ["&ISTR_KILL&"]');history.back();</Script>"
" j2 b' u3 f' v0 t' FRESPONSE.END
/ Z, `  @) Y& v/ e( ]END IF
5 J  i  _' R! q/ \; i  Z1 z" I- K, qEND FUNCTION6 l: e% r# B4 X# _) |2 X0 g
C#脚本:
& Z7 E6 O5 o2 k( \  w( N7 X9 M+ v# Fbool CheckParams(params object[] args), w, I6 O( g0 z1 N9 d, l* I
{7 M% R+ H* H7 [1 F0 ~
    string[] Lawlesses={"=","'"};4 k, a& C* Z8 J2 o8 x7 `) t$ p/ u
    if(Lawlesses==null||Lawlesses.Length<=0)return true;7 A# e7 S. ^4 o! _$ H
    //构造正则表达式,例:Lawlesses是=号和'号,则正则表达式为 .*[=}'].*  (正则表达式相关内容请见MSDN)) m% ^$ P, ^, t' R2 V% C; r
    //另外,由于我是想做通用而且容易修改的8 S( U/ m: o6 K8 h* q
函数,所以多了一步由字符数组到正则表达式,实际使用中,直接写正则表达式亦可;
3 Y2 X/ M& l6 w, U    string str_Regex=".*[";1 r3 U6 z6 f" C
    for(int i=0;i< Lawlesses.Length-1;i++)7 }( v7 f7 n; b% t5 F
        str_Regex+=Lawlesses+"|";9 V, z4 p% }& G/ ^
    str_Regex+=Lawlesses[Lawlesses.Length-1]+"].*";
+ ?% K# S/ `: D& K3 z3 L5 w    //
* Q! n7 g; c  E; `4 w# _/ |    foreach(object arg in args)
8 c  N* W* @5 A    {& ~$ |( t% k, F- ]# B& \% Z# D
        if(arg is string)//如果是字符串,直接检查- M$ T  e5 p# `2 {% T6 h
        {0 ~0 Y3 }4 E* z! n# g2 e
            if(Regex.Matches(arg.ToString(),str_Regex).Count>0)
5 I& f& y  V" L- X- m3 b            return false;
2 N5 z& _# m2 L4 I+ r9 _        }$ @' Y! O' q( H
        else if(arg is ICollection)//如果是一个集合,则检查集合内元素是否字符串,是字符串,就进行检查) i$ e, P% O! u$ p
        {
6 A, g5 m, Z% u, y            foreach(object obj in (ICollection)arg): T5 n; T. O' m: v0 i, E. P
            {, K- J$ w. x( c
                if(obj is string)
' U3 z9 ]% p5 ~% L                {
0 y) @$ {& ]+ S  V                    if(Regex.Matches" {1 p& p- L+ I) ~
(obj.ToString(),str_Regex).Count>0)1 p, m+ b9 U1 M  x7 C$ J
                    return false;
/ o) p3 `/ f" `& z                }+ k4 p. m/ a: r: j0 A' K
            }
, d1 v! M" e7 K( G* j5 Y        }
. N( s' C  [/ {6 Y, {+ ?    }
# ]% r  u: S$ |8 e3 `# l! g" e3 U    return true;
! u5 M* ~/ _3 N' f1 ]}

# Q2 C$ f1 D1 h
4 t5 T3 @: f  T' y- z[ 本帖最后由 nicenic 于 2008-4-14 10:27 编辑 ]

TOP

TOP

i不错
1 Q# w) d/ E- r5 z, `( o楼主说的不错,帮顶一下呀" m% a7 y- c% l; D0 C5 O
要买域名,空间的请找我! 现在我司的空间真在举行前所未有的3.15大优惠
7 ?  Z. p0 k% d( Z8 L) T( R空间5折优惠,还送域名,大家抓紧时间呀!/ K9 _2 N5 \7 t/ T0 ~
QQ: 52064595  f5 H+ ]2 a( P% |( S
网址: http://www.itnic.cn" Z9 W! y6 B3 c, u# T9 W: v+ O+ M

TOP

1

呵呵,加油了!其实很多机会你一犹豫就放过了,不试试又怎么知道呢,至少要去了解一下吧,网络上的东西不全是假的啊 。你要相信自己慧洁的大脑与眼睛!相信自己的判断能力!www.nicenic.com了解一下不会要命的,呵呵

TOP

呵呵

TOP

www.nicenic.com/?=fly耐思尼克信息技术有限公司,可以了解一下。

www.nicenic.com/?=fly耐思尼克信息技术有限公司,可以了解一下。

TOP

做精明的店长:谈如何自建独立网店

暑期将至,又到了购物黄金时期,这段时间很多在淘宝开店做生意的朋友都感到人气比平时要旺很多;然而,在别人的网站开店终归有着较多的限制,不知道大家有没有想过拥有一个自己的网店,所有的事情自己作主,让Taobao、Ebay等拍卖网站成为帮自己拉客的分店呢?5 s' @- {% S5 Y: U& W; h5 m+ C. B
做独立网店的好处:
/ C/ L+ \. N' l& J) D  \- e4 E+ c' L: E7 B  D+ D  |5 V! R
    其实,建立自己的独立网店有很多好处,例如:. [& ]7 I' N4 [) z9 c
    1、拥有自己的独立网店,可以拥有自己的独立域名,拥有自己的店标、拥有自己的品牌,自己的页面外观、自己的支付接口、自己的购物车。这一切将能体现自己的形象和实力。不会让客户认为您是个人或者是小店铺,增强客户对您的信任感;
" h) P6 T! ~9 k: K6 K# h: k, i" W4 J; ]9 ?* p7 }" \3 A& M
    2、拥有自己的独立网店,您的数据库,您的订单资料、您的客户资料、您的商品资料都是独立的,不必放在他人平台上;$ e& e% n, k: E8 E! _* C. i& E
9 P; l  |  |" ^6 ^$ W
    3、拥有自己的独立网店,您宣  传的将是您自己的域名。在平台上开店,您辛苦宣传则是将您的客户带到这个平台上,相当于您在辛苦为他人宣传,自己的努力换来平台的知名度;; `: U, ^5 ]- w* `
; E$ U. j4 J* _
    4、拥有自己的独立网店,您的客户就是您自己的。在平台上开店,您的客户是和您的竞争对手共享的。一不留神,您辛辛苦苦发展的客户就成为您的竞争对手的了。2 s  Q. \4 L! g. K5 s: v

  M1 U- i0 a1 p# |. d, F  o/ I    5、如果您是企业,您更需要开设自己独立的商店。这一切将体现您的企业形象!您肯定不希望别人通过点击他人域名到达您企业的网上商店吧?+ m' x$ X/ Z" x# v
怎样建立独立网店:
/ X# x4 T6 z9 p: `3 f    其实做个自己的网店并不难,只要完成下面3个步骤即可:6 [2 m! G5 @% x% j7 x& p3 L0 e" o' f
3 s6 p' s1 G8 f8 I
    1、申请一个自己满意的域名作为网店的访问地址,你可以到http://www.itnic.cn/domain/?=fly申请一个顶级域名,申请费用一年也就几十块,其实投资很小;
5 M* r# v3 T  b6 \# y
. `6 @1 a" Z4 T- Q& l9 ^$ a; R    2、需要有一个支持动态页面和数据库的虚拟主机,要一个虚拟主机就OK了,一般普通的网店访问量不是很大,不需要购置独立服务器,这样采购简单同时管理也方便,最主要是还节约很多成本。
! b5 A: b# v" x% u" P; J7 U6 P1 U5 R! `' K( B/ a2 |
    那么虚拟主机开通以后,该怎么样去建立自己的网店呢,别怕,这里给你介绍一个奇简单的方式。你可以直接去耐思尼克http://www.nicenic.com/special/?=fly申请一个网店型套餐,一个顶级域名+一个300M的智能双线主机+ShopEx网上商店系统,只要688元,申请开通即可使用。. Z9 Q1 t$ @3 N- r1 \
    菜鸟建站就是如些的简单,如果你还有问题的话可以直接和他们联系,qq:  591954823
6 L& [- o# i% O7 vhttp://www.nicenic.com/?=fly

TOP

1

谢谢大家的支持,帮忙顶贴啊!

TOP

不错

TOP

我把硬币抛向空中:如果正面朝上,就上MSN,如果背面朝上,就上QQ,如果硬币立起来,我就去自习。
5 \5 Z4 I  }( R' e# \, W" m" L- W% c- `8 k; w$ V$ l
9 }* P, ~  b; n5 }

, e9 V' Z/ o3 A7 t$ i- q( }; {
% s' W5 K6 w0 A3 g' M4 A/ c
% W: j4 O. V3 F8 V4 O* J
2 b4 Z& x$ W- |: s, ~
. {; k1 |5 ^3 g7 I" L8 L8 B( ^) Z' B% _. u
--------------------------------------
5 q$ @  ^5 m9 d! E" x( j& {9 l% K8 F1 Z
天天乐论坛http://bbs.ttr520.cn

TOP

发新话题