因此,使用PHP和MySql的人应该关注什么样的事情才能最大限度地提高安全性。
我做过的事情:
-mysql_real_escape_string所有输入
- 转义em后,对所有输入进行验证
- 在我的表名之前放置随机字母数字
-50character salt + Ripemd密码
在我认为我在懈怠的地方: - 我知道会话和保护它们一无所知。如果你所做的一切是不安全/安全的话:
session_start();
$_SESSION['login']= $login;
并检查:
session_start();
if(isset($_SESSION['login'])){
- 我听说过其他形式的注射,如交叉部位注射,什么不是...... - 可能还有很多我不知道的事情。
是否有关于使php安全的“清单”/ Quicktut?我甚至不知道我应该担心什么。我有点后悔现在没有建立起cakephp,因为我不是专业人士。
答案 0 :(得分:2)
您可以尝试通过测试用户代理来避免劫持。
类似的东西:
if (isset($_SESSION['userAgent'])) {
if ($_SESSION['userAgent'] != md5($_SERVER['HTTP_USER_AGENT'])) {
// HACK !!!
// Kill the process or ask for authenticating
}
}
else {
$_SESSION['userAgent'] = md5($_SERVER['HTTP_USER_AGENT']);
}
答案 1 :(得分:1)
如果您的应用程序允许发布任何类型的内容,您应该在登录时使用某种加密方式。 SSL当然是最好的,可怜的人ssl在发布登录表单之前用JS加密密码。
为了避免会话劫持,请在登录时将会话绑定到ip,(在登录时保存ip并与每个请求进行比较)。
的问候, //吨
答案 2 :(得分:1)
对于XSS和其他注入类型,主要是HTML和js注入,关键安全性是逃避所有输出。您粘贴在HTML中的所有内容都应该转换为HTML,这意味着浏览器中不应该看到任何js或HTML由直接来自数据库的东西生成的内容。
作为示例user_name,表单中设置的用户不应包含任何HTML或js代码。如果有人注入这样的东西,你会遇到一些问题(最简单的注入方式是大多数应用程序中的搜索表单输入,如果你的搜索在响应页面中回显)。因此,所有这些输出应该在输出之前有一个htmlspecialchars()。
以下是一些有用的链接:
答案 3 :(得分:0)
有多种黑客攻击方式。首先是当一个实际(或假的)用户试图找到软件中的空白以试图损坏您的服务器时。您将需要转义和输入检查以防止SQL注入解决此问题。
(或'an')其他人是试图窃取会话以冒充其他用户的黑客。这允许他们到达(和更改)他们无权获得的数据。
使用mysql_real_escape_string
修复SQL注入。当使用它并使用它时,没有必要害怕SQL注入。无需在表名前添加随机字符。这将使您的编程更难,同时不提供真正的额外安全性。
您还可以使用mysqli
和参数化查询,这些查询完全没有此问题。 mysqli负责为您逃脱。从理论上讲,参数化查询甚至可以更快地运行,因为可以更有效地缓存查询。然而,在实践中,情况并非如此。只有从MySQL 5.2开始,这些查询才会被缓存,但仍然没有那么高效。然而,现在无需担心。任何解决方案现在都可以为您提供足够好的表现。
您不应该做的一件事 - 允许在用户生成的内容中使用PHP代码。如果您允许用户键入PHP,您将允许他们破坏您的应用程序并可能修改您的数据库。此外,当黑客设法冒充用户/内容编辑器时,当您允许内容包含PHP时,他会免费获得一个完整的工具箱。
为防止会话被劫持,我认为最好使用SSL。如果您不想通过SSL为所有页面提供服务,则可以选择在cookie中保存会话,但只要进行了重要更改,就需要重新登录(使用SSL)。