作为一名初级Web开发人员,我会尽力通过检查来清理所有用户输入。然而,今天,我发现我的网站被黑了(我会根据要求分享他们的网站),这真的让我很奇怪他们是怎么做到的。我正在将我的网站重新组合在一起。我应该怎么做才能防止这些事情发生?是否有人应该与我交谈并询问我的网站有多安全?我该怎么做才能保证我的网站安全?我用PHP和MySQL编写了我的网站。
更新
终于恢复了备份。我在我的脚本中使用$_GET["name"]
,我猜他们是如何进入我的网站的。首先,他们能够在EACH和我服务器上的每个文件夹中放入一个index.html / index.php文件。谁知道我怎么能反驳这个?
更新:实际上,我的网站并没有被黑客攻击,而是主机。 SSH密码被破解,并在每个文件夹中安装了一个新的索引文件。
答案 0 :(得分:12)
这是一个非常广泛的问题,所以你得到的答案同样广泛。
为了测试您的网站的安全性,您可以penetration testing。有些公司会为你做这件事。您还可以查看Google Skipfish。
您可以做些什么来保证您的网站安全?你可以:
答案 1 :(得分:4)
要检查的两件大事是 SQL注入和远程执行代码。
当您从某些不受信任的来源(即整个恐怖世界!)获取输入并将其用作SQL查询时,会发生SQL注入。修复方法是停止使用字符串替换来构建查询和更新,并严格遵守参数化查询/更新。请注意,使用魔术引用是处理此问题的一种非常低劣的方法,因为它更容易弄错; “始终参数化每个查询”是一种更容易审核的简单方法。 (是的,你需要在这里真正审核你的所有代码。抱歉。)
远程代码执行是指您有任何机制允许网站的客户端要求网站运行未预先加载到网站的网站上的网络服务器可以写信给。它是方便的,是的,但它非常危险,因为一个狡猾的破解者可以要求网络服务器下载rootkit或其他恶意内容。我们过去常常使用我们的主Web服务器,因此我们现在在一个严格的只读文件系统(带远程日志记录)上运行它,远程执行PHP代码(或者,实际上,打开任何其他连接到非 - 白名单的服务器)严格禁止。对于不断被聘用的各种外部网页设计咨询公司来说,这是非常令人沮丧的,但这是因为他们在运行安全系统的整个业务中往往不是很专业,而且这确实意味着这一类攻击都被锁定了
(需要注意的另一件事是 XSS ,虽然它不是完全对您网站的攻击。当您未能引用不受信任的内容时,会发生这种情况。您的数据库正确,允许从您的网站提供恶意内容,而不会实际被黑客攻击本身。保护您的网站免受这些事情的接收端很重要,但您必须首先解决更严重的威胁,以便您的网站不再是有毒的僵尸。)
答案 2 :(得分:2)
防止SQL注入。使用好的密码。并始终检查用户输入(如php中的_GET和_POST变量)。
答案 3 :(得分:2)
答案 4 :(得分:1)
答案 5 :(得分:0)
Driis提供了一个很好的答案。我想补充一点,使用存储过程也非常有用。
答案 6 :(得分:0)
我建议你使用Sessions和POST,而不是Get。
会话:https://www.w3schools.com/php/php_sessions.asp
您可以使用以下信息获取表单提供的信息:
HTML:
<form acion="post.php" method="post">
<input type="text" name="somename"><br>
<input type="submit" value="Submit">
</form>
腓:
<?php
$text = $_POST["somename"];
echo($text);
?>
你应该使用.htpasswd和.htaccess ......