在我的cms我有index.php,客户端必须输入用户名和密码.如果他们是正确的,他会移动到admin.php,cms在哪里.
但现在黑客可以进入cms/admin.php,所以我的安全性现在很糟糕.
我知道,我可以使用$_SESSION
变量.
index.php
- 我可以给$ _SESSION ['成功']一些价值:
$_SESSION['success'] = TRUE
,并在admin.php中验证它
admin.php if($_SESSION['success'] == TRUE) { my script here... } else header("Location: index.php");
但我想在没有SESSION的情况下丰富这种效果.你能给我一个想法,我该怎么办?
谢谢
Web应用程序安全性非常深入.首先,您需要使用会话或会话的等效实现.
用户登录,您需要会话ID及其用户名存储在cookie和数据库中.在数据库中,您还需要存储一些有关它们的信息,例如用户代理,以便您可以判断其会话是否被劫持.有些人存储IP地址.如果用户正在使用移动设备上的应用程序,则无法正常工作,因为它们的IP地址可能会频繁刷新.
每次用户加载管理页面时,请验证他们是否具有有效且具有使用该页面权限的会话和用户cookie.然后使用您存储的有关该用户的信息验证请求是否来自它所启动的同一台计算机.
对于您在管理页面中放置的可导致管理操作的每个表单或链接,请添加具有唯一标识符的隐藏字段或值.页面上每个项目的一个标识符可能导致管理操作.生成这些标识符时,请将它们与它们识别的操作一起存储在数据库中.这称为nonce,它将随每个管理员请求一起提交(例如更新记录或删除用户或从您的银行帐户转移资金).当服务请求时,服务器应检查nonce是否与数据库中存储的内容匹配,然后将其删除.如果不匹配,可能是通过跨站点请求伪造攻击发出请求.
这些只是与经过身份验证的用户交互时要记住的一些事项,当然还有许多其他需要注意的事项,例如XSS.
安全性非常困难,虽然您的Web应用程序可能无法保证防弹安全策略,但您应该向用户保护其密码和个人信息.有关(更多)更多信息,请参阅OWASP.