我正在创建一个新闻网站,我已经写下了实现安全性所需的一系列清单。
用户+网站互动
我已经在我的网站中实现了所有这些功能。我知道大多数人会说使用PDO / Msqli进行消毒,但我是PHP的初学者,我很难学习PDO / Mysqli或OOP
所以,你能提供的任何其他东西都会很棒。 谢谢。
答案 0 :(得分:2)
- >使用html-entities&amp ;;清理所有POST / GET功能mysql_real_escape_string
为什么是HTML实体?您只需要它们以html格式显示信息。接收和存储信息时请勿使用它。
另外:mysql_real_escape_string仅适用于文本。如果你想接收一个整数,请执行以下操作:
$myInt = (int)$_POST["whatever"];
- >如果网站即将在线,关闭,错误报告或自定义
是的,使用日志文件存储它们并定期查看。
- >我不使用cookie,只使用会话(因为会话不那么脆弱)
如何在没有Cookie的情况下转发PHPSESSID?我希望不在网址中。我想你的意思是:我只用cookie来存储PHPSESSID。
安全性改进:为每个请求创建一个新的sessionid。
- >关闭目录列表
好。
- > make robot.txt以防止索引不需要的文件
好的,但敏感文件无论如何都不应该在webroot中(例如,db凭证)
- >对于密码,请使用salt + Md5
md5很弱。您可能希望研究其他方式进行单向加密。
- >只能通过获取ip来从一台PC和一个浏览器访问ADMIN站点,并浏览信息,否则抛出404错误。
这是一个好主意。
还有很多要补充的内容。大多数都与你的逻辑有关。
例如:如果您的用户拥有用户ID,并使用postsid发帖。您希望在tblpostings中存储帖子,同时存储用户ID,以便您知道是谁写的。 现在,如果您启用了帖子删除,则必须以某种方式检查删除帖子的人是否也是所有者。 这些东西很难适应简单的一般规则。编写代码时要注意。 : - )
答案 1 :(得分:1)
我要小心robots.txt文件,因为虽然它们应该阻止机器人索引某些位,但它们也告诉人们你不希望他们查看你网站的位数。
不严格,PHP和XSS,但如果服务器在Linux上,请禁用root ssh帐户并使用另一个帐户。拥有特定于数据库的用户,因此如果有人受到攻击,则其他数据库不会。
答案 2 :(得分:1)
“对于密码,请使用salt + Md5”
比明文更好,但目前最好的算法是bcrypt,并在此处描述:
答案 3 :(得分:0)
SQL注入攻击 停止使用mysql_real_escape_string并开始使用预准备语句/参数化查询。现在学习PDO,它并不难,并且会帮助你从一开始就把事情做好。
XSS 查看输出上下文转义。参见OWASP XSS预防备忘单。
登录时发出新会话。不要通过http泄漏那个会话。对登录用户使用https,并在会话cookie上设置secure和httpOnly标志。
使用bcrypt,scrypt或pbkdf2进行密码哈希。
正如其他人所说,不要将敏感文件放在服务器上不受保护。 Robots.txt是黑客入侵的好地方。