你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。
不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。
你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。
不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。
当前回答
曾经看到一扇门有人忘记锁门……
或者,看到一些JavaScript通过Ajax调用执行一些SQL。唯一的问题是,要运行的SQL与页面一起呈现,然后传递给服务…
其他回答
其中一个最简单,但真正值得付出代价的是:
使用PayPal等引擎的支付系统可能存在缺陷,因为在支付成功后,PayPal的响应没有得到应有的检查。
例如:
我可以进入一些CD购买网站,向购物车中添加一些内容,然后在结帐阶段,页面上通常会出现一个表单,其中包含paypal的字段,以及“支付”的提交按钮。
使用DOM编辑器,我可以进入“live”表单,将值从£899.00更改为£0.01,然后单击提交…
当我在PayPal的时候,我可以看到金额是1美分,所以我支付了,PayPal将一些参数重定向到初始购买网站,该网站只验证诸如payment_status=1等参数,而不验证支付的金额。
如果没有足够的日志记录,或者产品是自动分派的,那么成本就会很高。
最糟糕的一类网站是提供应用程序、软件、音乐等的网站。
我工作的公司有很多安全错误……下面是一些比较糟糕的例子:
所有的前雇员仍然拥有所有东西的活跃账户,即使是那些被解雇或关系不好的人 我们开发的每个站点(200多个)都有相同的管理员用户名和密码,所有在这里工作的员工都知道
史诗般的失败。
我的一个朋友是通过GET登录的。不用说,他吸取了惨痛的教训。
对我来说,最糟糕的,最可怕的,最危险的,犯罪的疏忽,但在彻底破坏整个系统的安全方面,奇怪的优雅总是来自the Daily WTF:
客户端PHP
function saveform()
{
var firstName = escapeSql(mainForm.elements.txtFirstName.value);
var lastName = escapeSql(mainForm.elements.txtLastName.value);
/* ... */
var offerCode = escapeSql(mainForm.elements.txtOfferCode.value);
var code =
' $cn = mssql_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD) ' +
' or die("ERROR: Cannot Connect to $DB_SERVER"); ' +
' $db = mssql_select_db($DB_NAME, $cn); ' +
' ' +
' if (mssql_query("SELECT 1 FROM APPS WHERE SSN=\''+ssn+'\'", $cn)) ' +
' { $ins = false; } ' +
' else ' +
' { $ins = true; } ' +
' ' +
' if ($ins) { ' +
' $sql = "INSERT INTO APPS (FIRSTNM, LASTNM, ..., OFFERCD) VALUES ("; ' +
' $sql+= "\''+firstName+'\',"; ' +
' $sql+= "\''+lastName+'\',"; ' +
' $sql+= "\''+offerCode+'\')"; ' +
' ' +
' /* ... */ ' +
' ' +
' mssql_query($sql, $cn); ' +
' mssql_close($cn); ';
execPhp(code);
}
就盯着它看一分钟。想想你所能做的一切。女士们先生们,这是洛夫克拉夫特的杰作。
当你丢失了密码和找回表格时,询问用户名和你的电子邮件。并且不验证电子邮件并将密码发送到指定的电子邮件。
刚)一/总动员:
这是在一个本地电视付费/订阅的网站上。很容易找到用户名,很多人使用名字。今天这个电视频道已经破产了(因为其他原因,比如缺乏专业精神)。