SolidZORO
V2EX  ›  PHP

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

  •  
  •   SolidZORO · Oct 20, 2010 · 7231 views
    This topic created in 5861 days ago, the information mentioned may be changed or developed.
    http://app3c.com/demo/talkman/ 这个是地址.现在完全处于不断更新超初级状态中.

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

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

    写PHP的朋友有没有好建议,安全方面,用法方面的.现在我很想听听你们的建议,对于PHP我实在太out了.
    22 replies  •  1970-01-01 08:00:00 +08:00
    aligo
    aligo
    Oct 20, 2010
    1
    用strip_tags
    fanzeyi
    fanzeyi
    Oct 20, 2010
    2
    应该禁止HTML代码的。。。。。。
    我承认width:1%是我写的。。
    lxlenovostar
    lxlenovostar
    Oct 20, 2010
    3
    进去 看不到东西 哦
    flytwokites
    flytwokites
    Oct 20, 2010
    4
    @fanzeyi 太狠了,什么也看不到了,只看到中间一道光柱
    fanzeyi
    fanzeyi
    Oct 20, 2010
    5
    @flytwokites 好了 我给删了= =
    fanzeyi
    fanzeyi
    Oct 20, 2010
    6
    然后他就给其他两个删了。。
    fanzeyi
    fanzeyi
    Oct 20, 2010
    7
    其实我估计SQL注入也米有做吧。。。 不过没有试。。 不会。
    fanzeyi
    fanzeyi
    Oct 20, 2010
    8
    现在你看到的状况是我用<!-- --> 来做的。。。
    fanzeyi
    fanzeyi
    Oct 20, 2010
    9
    提供解决方法。。 talk_delete.php?id=58
    Sunyanzi
    Sunyanzi
    Oct 20, 2010
    10
    给你一个小建议 ...

    所有需要写数据库的内容在进入 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
    lianghai
    Oct 20, 2010
    11
    好萌的背景……
    文字排版果然是有 @SolidZORO 精神的超小字号啊……
    SolidZORO
    SolidZORO
    OP
    Oct 20, 2010
    12
    如果精致htm 这样lstr_replace('<','&lt;',$text) 这样也可以,不过我又想让人用html发图片什么的,这个现在我还暂时没找到解决的办法。所以嘛,就只是 禁用了 <script 之前连这个都没禁用的时候 超夸张的。被不停的跳转。。。

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

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

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

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

    B,SQL相当不安全,绝对应该避免直接将任何用户传递上来的(GET,POST)的数据拼接成sql语句,一定至少使用prepare+bindParam方式进行查询,并且尽可能对GET,POST全局变量进行预过滤,最后,干脆别用SQL了,改用nosql数据库
    aligo
    aligo
    Oct 20, 2010
    21
    PS:如果需要保留html tags的显示可以用htmlspecialchars
    chone
    chone
    Oct 20, 2010
    22
    插入最新youtube视频 :)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2288 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 11:45 · PVG 19:45 · LAX 03:45 · JFK 06:45
    ♥ Do have faith in what you're doing.