首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP :保护数据库和文件安全的技术

PHP :保护数据库和文件安全的技术
EN

Stack Overflow用户
提问于 2011-08-02 20:59:13
回答 5查看 129关注 0票数 0

我正在建设一个文本共享网站,用户将上传他们的文本文件。

我想知道有人可以用什么方法攻击我的数据库和存储在我服务器上的文本文件。有什么方法可以保护他们。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-02 21:14:48

  1. 确保您使用PDO进行数据库交互(这将防止您受到诸如MySQL
  2. .htaccess之类的攻击,从而获得更多控制权。(对公众隐藏应用程序的设计结构始终是一种好的做法,您可以尝试使用more-rewrite重写您的网址,或者使用.htaccess拒绝用户直接访问文件的权限。
  3. 使用面向对象的编程面向对象的编程就是为了利用它而发明的。
  4. 确保你的应用程序使用设计模式。采用符合标准的设计模式使你的网站不易受到攻击,你可以在你的应用程序中使用不同的设计模式,比如,单例模式,MVC模式等等。试图重新发明轮子是没有用的。尝试使用一个框架,CakePHP是我个人推荐的,否则你也可以尝试使用代码触发器或Symfony。
票数 2
EN

Stack Overflow用户

发布于 2011-08-02 21:33:37

最好的想法

我必须建议您使用某种框架来完成此任务。您仍然需要使用下面的一些技术(例如,file_get_contentsunlink )。

至于框架:

CodeIgniter非常简单,Symfony是一个很好的中间件--它与一个真正的对象关系管理系统结合在一起,而YAML配置给它一种更健壮的感觉。到目前为止,Zend是最强大的--它有一个包罗万象的库(它是如此令人印象深刻,以至于有一些绑定允许您在Zend的库中使用CodeIgniter或Symfony )。当然,强大的功能也会带来巨大的复杂性(除非你是Peter Parker)。

如果这不是一种选择

老实说,最好将文件存储在数据库中,而不是存储在文件系统中。readfile可能是一个主要的安全风险(它不一定是一个主要的安全风险,但实际上您必须担心它),而且您已经计划整合一个数据库。哦,还有一个额外的好处,你可以索引这些文件,这样你就可以进行合法的搜索了。

一旦使用了move_uploaded_file,就应该依次执行$input = file_get_contents($tmp_fl_name);unlink($tmp_fl_name);,以便从文件系统中删除该文件。然后,使用PDO将数据插入数据库。然后,当您插入到数据库中时,请确保使用带有bindParam的PDOStatement,以防止bindParam注入。

它可能看起来像这样:

代码语言:javascript
复制
$tmp_file = "/path/to/temps/tmp".microtime().".tmp";
move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $tmp_file);
$input = file_get_contents($tmp_file);
unlink($tmp_file);
$sth = $dbh->prepare('INSERT (:fl, NOW()) INTO USER_FILES');
$sth->bindParam(':fl', $input, PDO::PARAM_STR);
$sth->execute();
票数 2
EN

Stack Overflow用户

发布于 2011-08-02 21:00:24

php.net/security有一个很棒的综合报道

顺便说一下,你有个王牌名字--是你的真名吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6912464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档