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

2010-10-20 17:53:41 +08:00
 SolidZORO
http://app3c.com/demo/talkman/ 这个是地址.现在完全处于不断更新超初级状态中.

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

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

写PHP的朋友有没有好建议,安全方面,用法方面的.现在我很想听听你们的建议,对于PHP我实在太out了.
6133 次点击
所在节点    PHP
22 条回复
aligo
2010-10-20 17:55:05 +08:00
用strip_tags
fanzeyi
2010-10-20 18:17:26 +08:00
应该禁止HTML代码的。。。。。。
我承认width:1%是我写的。。
lxlenovostar
2010-10-20 18:50:15 +08:00
进去 看不到东西 哦
flytwokites
2010-10-20 18:50:45 +08:00
@fanzeyi 太狠了,什么也看不到了,只看到中间一道光柱
fanzeyi
2010-10-20 18:53:52 +08:00
@flytwokites 好了 我给删了= =
fanzeyi
2010-10-20 18:56:01 +08:00
然后他就给其他两个删了。。
fanzeyi
2010-10-20 18:56:39 +08:00
其实我估计SQL注入也米有做吧。。。 不过没有试。。 不会。
fanzeyi
2010-10-20 19:00:51 +08:00
现在你看到的状况是我用<!-- --> 来做的。。。
fanzeyi
2010-10-20 19:01:44 +08:00
提供解决方法。。 talk_delete.php?id=58
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
2010-10-20 19:29:18 +08:00
好萌的背景……
文字排版果然是有 @SolidZORO 精神的超小字号啊……
SolidZORO
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
2010-10-20 19:49:44 +08:00
植入alert成功,麻烦删掉#73
Anylei
2010-10-20 20:07:32 +08:00
@SolidZORO 如果明天做安全检查的话,建议先将demo删掉,否则对后来的访问者有些不负责任了。
Sai
2010-10-20 20:21:11 +08:00
抱歉抱歉,顺手把样式改了……
fanzeyi
2010-10-20 20:29:40 +08:00
@Sai ....................
lamengao
2010-10-20 20:36:13 +08:00
php处理安全问题只要记住两点:对输入进行过滤,对输出进行转义.
SolidZORO
2010-10-20 21:16:07 +08:00
wii上的全明星大乱斗X玩不了,果然FAMI通满分作品比较难折腾。

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

B,SQL相当不安全,绝对应该避免直接将任何用户传递上来的(GET,POST)的数据拼接成sql语句,一定至少使用prepare+bindParam方式进行查询,并且尽可能对GET,POST全局变量进行预过滤,最后,干脆别用SQL了,改用nosql数据库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/3555

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX