我正在创建一个使用perl脚本,PHP,MySQL数据库和HTML的网站。我主要担心的是确保无论如何都有人可以访问任何可以访问我信息的内容。我的意思是,无论如何有人拿到我的perl脚本并查看我的数据库信息。我知道sql注入,但我没有输入信息的表格。有什么我应该记住这些东西。
答案 0 :(得分:4)
无论如何,有人可以获取我的perl脚本并查看我的数据库信息
仅当网络服务器不解析/处理脚本并将其作为纯文本返回时,才会发生这种情况。通常,此解析/处理仅发生在特定文件扩展名上,例如.pl
用于perl文件,.php
用于PHP文件。如果您(或黑客)将其重命名为.txt
,则客户端将能够以纯文本格式获取整个脚本。然而,如果黑客能够重命名它,它无论如何都可以访问整个脚本。然后由FTP或CMS中的安全漏洞完成。
此外,我已经看到了基于路径作为参数从webapp上下文(外部)读取文件(通常是图像或其他静态文件)的脚本。例如。 download.php?filename.ext
如果此类脚本未对文件路径进行任何健全性检查,则智能黑客可能能够通过download.php?%2Fserver%2Fhtdocs%2Fscript.php
以明文形式获取脚本。
答案 1 :(得分:2)
这个问题的广度有点压倒性,但这是一个很好的问题而且非常重要。
您将在服务器上遇到的许多问题都与服务器访问本身有关,请确保您不使用任何不需要的软件。如果您不需要名称服务器,请关闭bind;同样适用于ftp,即使是sendmail也是如此。如果可能,请使用强密码和备用端口。
对于PHP,请参阅http://us3.php.net/manual/en/security.php和http://php-ids.org/;肯定使用mysql_real_escape_string()和htmlentities()。
对于HTML / PHP / JS,请参阅http://en.wikipedia.org/wiki/Cross-site_scripting
有很多值得思考的问题。我建议你找一个导师来帮助你弄清楚什么是重要的。我现在正在指导一个人,即使我不完美,也能帮助他很多。这样可以提供帮助,但是您信任的人可以查看您的工作方式,除非您发布整个代码库,否则可以提出您不会到达的建议。
答案 2 :(得分:2)
使用SQL的占位符,即使PHP支持它。
逃避输出。你的模板系统可能会有所帮助。
使用cgi-bin目录。它确实有助于保护意外泄漏。没有cgi-bin就很容易制作网址。
在Perl中使用污点模式,在PHP中使用强化PHP。
答案 3 :(得分:1)
Web应用程序安全性是一个很大的主题。但是,您知道SQL注入中存在的最大漏洞之一,因此这是一个良好的开端。
其他几个大的是跨站点脚本(XSS)和跨站点请求伪造(CSRF - “See-Surf”)
XSS - http://en.wikipedia.org/wiki/Cross-site_scripting
CSRF - http://en.wikipedia.org/wiki/Csrf
像往常一样,维基百科提供了一个很好的介绍。
您可能还希望通过使用HMAC来查看验证请求的真实性 http://en.wikipedia.org/wiki/HMAC
答案 4 :(得分:1)
真的去看看community wiki。它充满了信息。或者只是在stackoverflow上搜索这里有很多问题。
答案 5 :(得分:1)
永远不要相信任何形式的任何用户输入..永远:)
困难的部分是弄清楚用户可以为您的网站提供输入的所有方式..