V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SolidZORO
V2EX  ›  PHP

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

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

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

    PHP真的不算难.我这样的代码苦手也能慢慢的写起东西来了.慢慢的了解了.

    写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   ·   实用小工具   ·   2780 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:46 · PVG 15:46 · LAX 23:46 · JFK 02:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.