gpt4 book ai didi

php - 如何增强网站的安全性?

转载 作者:可可西里 更新时间:2023-11-01 07:49:14 24 4
gpt4 key购买 nike

问题 1:我可以只使用 $userid = mysql_real_escape_string($_GET['user_id']);

或者我需要使用下面的代码更好?

function mysql_prep( $value ){
$magic_quotes_active = get_magic_quotes_gpc();
$new_enough_php = function_exists( "mysql_real_escape_string" ); //example. php >= v4.3.0
if( $new_enough_php ) { //php v4.30 or higher, undo any magic quote effects so mysql_real_escape_string can do the work
if( $magic_quotes_active ) { $value = stripslashes( $value );}
$value = mysql_real_escape_string( $value );
} else { //before php v4.3.0.
if( !$magic_quotes_active ) { $value = addslashes( $value ); }
}
return $value;
}

$userid = trim(mysql_prep($_GET['user_id']));

问题 2:我们真的需要在 $_SESSION['user_id'] 上使用 md5()shal() 吗?为什么我们需要那个? session hijacker 只能得到session id,却不能得到session 变量值对吧?如果是这样,那么我就不需要再对 $_SESSION['user_id'] 的值进行哈希处理了,对吗?例如:

if (isset($_POST['login'])) {
if ($username==$user_username_in_db && $hashed_password==$user_password_in_db) {
$_SESSION['user_id'] = sha1($user_id_in_db); //sha1 convert userid to crazy long characters
}
}

$query2 = "SELECT id FROM user WHERE sha1(id)='{$userid}' LIMIT 1";

问题 3 : 由于 php session hijacking 发生并且我不能使用 ssl/https,所以我让网站要求用户每次尝试删除消息或 friend 时提交密码,因为 session hijacker 可能冒充用户删除他的消息/ friend 。我可以知道如果我的网站总是要求用户输入密码是危险的吗?密码会不会更容易被破解?请问session劫持者只能冒充用户,不能窃取用户密码吗?

最佳答案

问题一:如果你的user_id在数据库中存储为整数,你可以使用:

$user_id = intval($_GET['user_id']);

因此,如果有人篡改了查询字符串,则可能发生的只是他们得到一个空白结果。但是,不清楚您如何使用 $_GET['user_id'];

问题2:sha1和md5是哈希算法。这意味着对于任何长度的任何给定字符串,它们都会返回一个显示为 41/32 字节十六进制字符串的数字。

那有什么用?其用途是这些算法不可逆,这使得它们非常适合隐藏信息,例如某人的用户名和密码。许多人对所有事情都使用一个相同的密码,以确保他们的密码不会被盗,以防万一你搞砸了并且黑客获得了对你的数据库的访问权限 - 你为你的用户提供了另一种安全级别 - 没有人 应该能够从哈希中获取实际密码。当然,这也可以防止有权访问数据库的人读取人们的密码并损害他们的隐私。现在,有一些方法可以尝试将哈希值反转为纯文本(所谓的彩虹表),但这是另一个话题。

问题 3:您实际上应该首先防止 session 劫持。为什么会这样?您是否以某种方式(通过 URL)向公众公开了 session_id 并且是否实现了标准检查?

时不时地询问密码会让用户感到烦恼,应该避免,除非您想不出保护 session 的方法。

至于其他的,有个叫PHP的东西PDO理论上应该使用清理字符串,连接到数据库并将内容插入数据库更容易(尽管与常规 mysql_ 或 mysqli_ 函数相比它相当复杂,因此人们似乎避免使用它)。您至少应该阅读它以深入了解它的作用以及它如何帮助您抵御 SQL 注入(inject)。

关于php - 如何增强网站的安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5792614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com