常见的未知PHP安全陷阱
我知道像这样的问题已经被问过一百次了,但我的问题有点不同常见的未知PHP安全陷阱,php,security,Php,Security,我知道像这样的问题已经被问过一百次了,但我的问题有点不同 我知道所有常见和广为人知的安全问题,如SQL注入、XSS等。但是,那些经常出现但大多数情况下未被识别或未被判定为漏洞的问题又如何呢?是否有任何?缺乏针对社会工程攻击的保护程序?例如,攻击者呼叫办公室并冒充他人获取密码 密码创建、分发和保护策略不佳 FTP帐户破解会导致恶意代码上载到您的站点 薄弱/易受攻击的第三方托管服务器可能会导致您的网站受到威胁,无论您花了多少时间使其安全 使用$\u REQUEST而不是$\u GET或$\u POS
我知道所有常见和广为人知的安全问题,如SQL注入、XSS等。但是,那些经常出现但大多数情况下未被识别或未被判定为漏洞的问题又如何呢?是否有任何?缺乏针对社会工程攻击的保护程序?例如,攻击者呼叫办公室并冒充他人获取密码 密码创建、分发和保护策略不佳 FTP帐户破解会导致恶意代码上载到您的站点 薄弱/易受攻击的第三方托管服务器可能会导致您的网站受到威胁,无论您花了多少时间使其安全
$\u REQUEST
而不是$\u GET
或$\u POST
,这是一个坏主意,因为$\u REQUEST
也包含cookies,并且它为有一件事我已经看到了很多,它被开发为一种特性,但在为时已晚之前不会被视为一个安全漏洞,那就是改变状态的GET请求。这些很容易导致错误。例如,您的应用程序可能有一个链接,用户可以从该链接注销。但第三方网站可以添加如下代码:
<!-- on evil.com site -->
<img src="http://mysite.com/logout">
然后,当用户在evil.com上加载页面时,他们将从mysite.com注销
最糟糕的问题发生在站点使用状态更改GET请求实现API时。例如,如果我运行一个社交网站,其URL如site.com/addfriend、site.com/sendmessage等,然后我将这些URL发送给将为我的网站制作应用程序的开发人员,当发现安全漏洞时,开发人员将不得不处理API更改。PHP已经存在了10多年,并且已经成熟了很多
注意php.ini中的lax默认值 我曾经处理过一堆垃圾,其中fopen处理程序被启用,就像“注册全局”一样
<?php
include $MY_BASE . '/includes/myLib.inc';
?>
这使得任何人都可以远程执行他们想要的任何代码。看到:
PHP将通过HTTP获取文本文件并在本地执行。因为Apache是以root用户身份运行的。。。好吧,你明白了。以下是我研究过的一些:
- 在数据库中以明文形式存储密码
- 如果你的网站被黑客攻击,黑客可以访问你所有用户的密码和电子邮件。考虑有多少用户对他们的电子邮件和你的网站有相同的密码。
- 将电子邮件存储在与用户相同的表中
- 如果SQL注入攻击使黑客能够访问您的用户表,那么唯一有价值的信息就是电子邮件地址。把它放在一个单独的表格里,这样黑客就更难对付了
- 如果你不打算给用户发电子邮件,只存储他们电子邮件的散列信息:访问用户电子邮件的黑客可以将其卖给垃圾邮件发送者
- 即使您有一个受密码保护的站点,也要计算一下密码的安全性。我有一个朋友的网站使用了一个简单的5位数字作为密码。我把它敲碎了 大约一个小时
- 如果您正在发送有价值的通信(即:您正在执行使用大量资源的操作:cpu、内存等),则始终需要用户提供带有时间戳的令牌。
- 如果黑客发现你有一个每次被攻击都要花费你0.0001美元的操作,他们可以用僵尸网络在你的名字上收取费用
- 要求用户发送哈希(用户的唯一ID、时间戳和秘密salt)以及明文时间戳。明文时间戳让你验证你上周二没有给他们权限,散列中的时间戳让你验证has属于该消息,has中的UID确保黑客没有拦截其他人的请求,散列中的秘密盐确保了它们不会自己生成
- 如果您正在为应用程序编写插件系统,请注意您在私有变量中存储的内容。看看我写的这篇关于如何去做的文章
只是我处理过的一些想法和事情。希望有帮助 以下是我看到的一些常见陷阱: 1。不转义实体 它是基础知识;所有不受信任的输入(尤其是来自表单的用户输入)在输出之前都必须进行清理
echo $_GET['username'];
2。不转义SQL输入
$query = "select * fromt able where id = {$_GET['id']}";
3。错误地要求和包含文件
include($_GET['filename']);
4。双转义引号
如果magic_quotes_gpc为真,则使用addslahes将再添加一个斜杠
因此总共添加了两个斜杠。许多帖子并非特定于PHP。我确信存在一些语言缺陷,但正如您在文章中看到的,实现安全方面的最佳实践(如过滤用户输入)非常重要。安全web应用的良好开端是。和主题:
干杯XSS与PHP有什么关系?如果它们是“未知”的,那么它们可能不是“普通”的,没有人能够告诉您他们从未听说过的事情。@Anon:不转义输出可能导致XSS。。。这就是我的意思@NSD:你可能是对的,但我想抓住这个机会;)“可能有人在这里走动,发现了一些有趣的东西。”Anon:只是提供一个简单的例子,弗兰兹的意思是,考虑最近在Flash中发现的漏洞:任何生成的不逃避自定义回调的JSONP馈送都可以被操纵来服务于一个大开的交叉矩阵.XML文件(闪存将兑现)。“最近发现”——这也是我的意思;)如果有任何一种语言或技术的方法,我会感到惊讶