第一支PHP程序,一个留言板.求指导. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SolidZORO
V2EX    PHP

第一支PHP程序,一个留言板.求指导.

  •  
  •   SolidZORO 2010-10-20 17:53:41 +08:00 6498 次点击
    这是一个创建于 5469 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://app3c.com/demo/talkman/ 这个是地址.现在完全处于不断更新超初级状态中.

    然后首先我给几个朋友看的时候.立马被Javascript注入了,最后慌忙找了一下方法,给用str_replace(array('<script'),array('&lt;script'),$text) 暂时防范了Javascript注入别的暂时不会弄.朋友发来的XSS建议也看不懂.

    PHP真的不算难.我这样的代码苦手也能慢慢的写起东西来了.慢慢的了解了. br />
    写PHP的朋友有没有好建议,安全方面,用法方面的.现在我很想听听你们的建议,对于PHP我实在太out了.
    22 条回复    1970-01-01 08:00:00 +08:00
    aligo
        1
    aligo  
       2010-10-20 17:55:05 +08:00
    用strip_tags
    fanzeyi
        2
    fanzeyi  
       2010-10-20 18:17:26 +08:00
    应该禁止HTML代码的。。。。。。
    我承认width:1%是我写的。。
    lxlenovostar
        3
    lxlenovostar  
       2010-10-20 18:50:15 +08:00
    进去 看不到东西 哦
    flytwokites
        4
    flytwokites  
       2010-10-20 18:50:45 +08:00
    @fanzeyi 太狠了,什么也看不到了,只看到中间一道光柱
    fanzeyi
        5
    fanzeyi  
       2010-10-20 18:53:52 +08:00
    @flytwokites 好了 我给删了= =
    fanzeyi
        6
    fanzeyi  
       2010-10-20 18:56:01 +08:00
    然后他就给其他两个删了。。
    fanzeyi
        7
    fanzeyi  
       2010-10-20 18:56:39 +08:00
    其实我估计SQL注入也米有做吧。。。 不过没有试。。 不会。
    fanzeyi
        8
    fanzeyi  
       2010-10-20 19:00:51 +08:00
    现在你看到的状况是我用<!-- --> 来做的。。。
    fanzeyi
        9
    fanzeyi  
       2010-10-20 19:01:44 +08:00
    提供解决方法。。 talk_delete.php?id=58
    Sunyanzi
        10
    Sunyanzi  
       2010-10-20 19:16:57 +08:00
    给你一个小建议 ...

    所有需要写数据库的内容在进入 SQL 语句之前使用 mysql_escape_string() 处理一下 ...

    我在最开始用 php 的时候通常使用的方式是这样的 ... 比如插入一条记录 ...

    mysql_unbuffered_query( sprintf(
    'INSERT INTO `tablename` ( `text` ) VALUES ( \'%s\' );',
    mysql_real_escape_string( $_POST['text'] ) ),
    $conn );

    所有需要显示在页面上面的内容 ... 输出之前用 htmlentities() 处理 ...

    在 php 短标签开启的情况下可以用下面的方法在页面内嵌入动态内容 ...

    <?=htmlentities($rs->text);?>

    其中 $rs 是通过 mysql_fetch_object 获得的对象 ...

    这两种方式都不是最优的 ... 但是可以有效的避免现在混乱的状况 ...
    lianghai
        11
    lianghai  
       2010-10-20 19:29:18 +08:00
    好萌的背景……
    文字排版果然是有 @SolidZORO 精神的超小字号啊……
    SolidZORO
        12
    SolidZORO  
    OP
       2010-10-20 19:36:27 +08:00
    如果精致htm 这样lstr_replace('<','&lt;',$text) 这样也可以,不过我又想让人用html发图片什么的,这个现在我还暂时没找到解决的办法。所以嘛,就只是 禁用了 <script 之前连这个都没禁用的时候 超夸张的。被不停的跳转。。。

    strip_tags我找了一下,要是有demo一个范例就好了。我对那种语法介绍蛮摸不着边的。。

    @Sunyanzi 谢谢你的一大串文字,我明天要用这样的方法做一次全面的安全检查。 虽然现在我还不明白你说的是什么意思。

    @lianghai 这是我一贯的风格。做的demo简单一点就行。而且tahoma在小字号还不错。当然如果用ms gothic来显示英文也是非常不错的。哈哈。如
    darcy
        13
    darcy  
       2010-10-20 19:49:44 +08:00
    植入alert成功,麻烦删掉#73
    Anylei
        14
    Anylei  
       2010-10-20 20:07:32 +08:00
    @SolidZORO 如果明天做安全检查的话,建议先将demo删掉,否则对后来的访问者有些不负责任了。
    Sai
        15
    Sai  
       2010-10-20 20:21:11 +08:00
    抱歉抱歉,顺手把样式改了……
    fanzeyi
        16
    fanzeyi  
       2010-10-20 20:29:40 +08:00
    @Sai ....................
    lamengao
        17
    lamengao  
       2010-10-20 20:36:13 +08:00
    php处理安全问题只要记住两点:对输入进行过滤,对输出进行转义.
    SolidZORO
        18
    SolidZORO  
    OP
       2010-10-20 21:16:07 +08:00
    wii上的全明星大乱斗X玩不了,果然FAMI通满分作品比较难折腾。

    哈哈,@Anylei 任意吧。 反正是demo。 大家任意改就是了。如果有闲情的话,我是要看看大家能够改得如何离谱。我后面也好学学。
    SolidZORO
        19
    SolidZORO  
    OP
       2010-10-20 21:16:31 +08:00
    @lamengao 受用了,你这句精辟。
    aligo
        20
    aligo  
       2010-10-20 21:29:12 +08:00
    A,防止html标签注入被输出,使用strip_tags在输出的时候,对可能被用户输入污染的任何字符串进行转义

    B,SQL相当不安全,绝对应该避免直接将任何用户传递上来的(GET,POST)的数据拼接成sql语句,一定至少使用prepare+bindParam方式进行查询,并且尽可能对GET,POST全局变量进行预过滤,最后,干脆别用SQL了,改用nosql数据库
    aligo
        21
    aligo  
       2010-10-20 21:36:02 +08:00
    PS:如果需要保留html tags的显示可以用htmlspecialchars
    chone
        22
    chone  
       2010-10-20 21:55:57 +08:00
    插入最新youtube视频 :)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2751 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:41 PVG 22:41 LAX 07:41 JFK 10:41
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86