PHP 如果不对 POST 或者 GET 请求做过滤处理就会被注入吗?

2014-03-26 10:58:12 +08:00
 hellohacker
看到很多被注入的例子 都是因为未对POST或者GET做判断处理,难到PHP不对POST或者GET请求做过滤处理就会被注入吗?
5893 次点击
所在节点    程序员
17 条回复
wdkwdkwdk
2014-03-26 10:59:40 +08:00
不一定啊,要看你有没有用来对数据库做操作
justfindu
2014-03-26 11:12:26 +08:00
不管什么语言都会这样吧~ 不做过滤~ 然后操作数据库~ 然后就没有然后了~
fsw90628
2014-03-26 11:13:33 +08:00
用 Prepared Statements 应该可以解决类似问题了。

http://php.net/manual/en/pdo.prepared-statements.php

p.s. 好久不看,PHP 的官方文档界面更新了。
bearcat001
2014-03-26 11:47:09 +08:00
有句话叫:永远不要相信用户

所以对于所有可以输入或者修改的数据,一定进行严格过滤和判断。越早处理,可控性越高。
scusjs
2014-03-26 11:48:32 +08:00
最好都过滤一下,养成好的习惯
slixurd
2014-03-26 12:28:10 +08:00
参数绑定也是大部分数据库API都提供的.
在多次查询同一语句下效率高而且不会被SQL注入
但是如果查询次数少的话,参数绑定写起来麻烦而且没什么性能提升
Mutoo
2014-03-26 12:40:10 +08:00
不只是 POST 和 GET,request header 里面的任何一部分都有可能。只要你引用了来自用户的数据,都要小心,像 Cookies 就经常被忽视。
wvidc
2014-03-26 15:28:13 +08:00
这是一个很值得深究的问题
sneezry
2014-03-26 15:41:06 +08:00
有用User-Agent注入的例子呢。
davansy
2014-03-26 16:22:25 +08:00
不要相信任何用户输入的数据!
whuhacker
2014-03-26 18:28:26 +08:00
使用一个框架,让框架帮你做这些事情
tywtyw2002
2014-03-26 18:39:11 +08:00
如ajax调用。js做过一遍过滤,服务器还要去做一遍
sb
2014-03-26 18:55:58 +08:00
大二时老师说了一个词叫 数据清洗。
进来的所有数据都要清洗一下,不然会被恶意构造语句获取你的用户数据。
wwek
2014-03-26 19:11:26 +08:00
强烈建议 php操作数据库用 PDO
wwek
2014-03-26 19:12:47 +08:00
@Mutoo
@sneezry
@davansy
@whuhacker
@tywtyw2002
@sb
说的都非常对的!

不要相信客户端来的任何数据。
http 里面的 cookie user-agent post get 等。所有是客服端来的东西。都要过滤
liuser
2014-03-27 01:42:44 +08:00
PDO 参数绑定就不错。
hiddenman
2014-03-27 11:22:51 +08:00
不管是POST,还是GET,都可以构造。

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

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

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

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

© 2021 V2EX