一个完整、安全的用户登录系统_PHP
在使用PHP编程的时候,我有一个习惯,不太喜欢使用现成的库文件,例如PHPLib或者其它类似的库,在这个系统中,我也打算自己写一个库文件,它需要处理认证、确认email,更新帐号(密码,email)等事情。
为了在保证该系统安全的同时,不会加重我现有数据库的负担。因此这个新的系统要依赖cookies。这确实是一个两难的选择,因为如果只是设置一个用户名的cookie,是很不安全的,这行不通,但从数据库的负担考虑,我也不能加入一个简单的无序码而交由我的数据库来进行验证。
解决的方法是同时设置两个cookie,一个是用户名的cookie,一个是无序码的cookie。这个无序码实际上是由用户名和一个超级密码(只有程序设计者知道)组合通过md5()函数运算产生的。由于md5()是一个单向的无序码,因此是不可以破解的。在用户更改email时,我也可以用该email和超级密码产生一个无序码,以让用户确认修改。这实际上是一个公匙/私匙类的系统。不明白?不要紧,下面再慢慢说明。
有趣的是,这个系统的扩展能力是可以达到无穷的,因为该系统的主要工作是计算md5()函数的值,而且由web服务器完成,在负载增加时,可以加入其它的服务器来分担负载,虽然认证系统不会拖跨一个数据库,但是这样做就让最终的瓶颈只能出现在数据库上。
以下是该库中的两个函数--记号产生和记号认证函数。
$hidden_hash_var='your_secret_password_here';
$LOGGED_IN=false;
unset($LOGGED_IN);
function user_isloggedin() {
global $user_name,$id_hash,$hidden_hash_var,$LOGGED_IN;
file://已经进行无序码的检测了吗
file://如果是的话,返回该变量
if ( isset($LOGGED_IN) ) {
return $LOGGED_IN;
}
file://are both cookies present?
if ($user_name && $id_hash) {
/*
由cookies中得来的用户名和系统超级密码产生一个认证用的无序码如果该无序码与cookie中的无序码一样,则cookies中的变量是可信的,用户已经登录
*/
$hash=md5($user_name.$hidden_hash_var);
if ($hash == $id_hash) {
file://无序码符合,设置一个全局变量,这样我们在再次调用该函数的时候,
file://就无需再次进行md5()运算
$LOGGED_IN=true;
return true;
} else {
file://两个无序码不符合,没有登录
$LOGGED_IN=false;
return false;
}
} else {
$LOGGED_IN=false;
return false;
}
}
function user_set_tokens($user_name_in) {
/*
一旦用户名和密码通过验证,就调用这个函数
*/
global $hidden_hash_var,$user_name,$id_hash;
if (!$user_name_in) {
$feedback .= ' ERROR - User Name Missing When Setting Tokens ';
return false;
}
$user_name=strtolower($user_name_in);
file://使用用户名和超级密码创建一个无序码,作判断是否已经登录用
$id_hash= md5($user_name.$hidden_hash_var);
file://设置cookies的有效期为一个月,可设置为任何的值
setcookie('user_name',$user_name,(time() 2592000),'/','',0);
setcookie('id_hash',$id_hash,(time() 2592000),'/','',0);
}
?>
再来看另一段有趣的代码,用户怎样才能安全地改变他们的email地址呢?他们可以在任何时候改变email地址,但是要进行确认。
function user_change_email ($password1,$new_email,$user_name) {
global $feedback,$hidden_hash_var;
if (validate_email($new_email)) {
$hash=md5($new_email.$hidden_hash_var);
file://改变数据库中确认用的无序码值,但不改变email
file://发出一个带有新认证码的确认email
$user_name=strtolower($user_name);
$password1=strtolower($password1);
$sql="UPDATE user SET confirm_hash='$hash' WHERE user_name='$user_name' AND password='". md5($password1) ."'";
$result=db_query($sql);
if (!$result || db_affected_rows($result)
$feedback .= ' ERROR - Incorrect User Name Or Password ';
return false;
} else {
$feedback .= ' Confirmation Sent ';
user_send_confirm_email($new_email,$hash);
return true;
}
} else {
$feedback .= ' New Email Address Appears Invalid ';
return false;
}
}
function user_confirm($hash,$email) {
/*
用户点击认证email的相关连接时,连到一个确认的页面,该页面会调用这个函数,
*/
global $feedback,$hidden_hash_var;
file://verify that they didn't tamper with the email address
$new_hash=md5($email.$hidden_hash_var);
if ($new_hash && ($new_hash==$hash)) {
file://在数据库中找出这个记录
$sql="SELECT * FROM user WHERE confirm_hash='$hash'";
$result=db_query($sql);
if (!$result || db_numrows($result)
$feedback .= ' ERROR - Hash Not Found ';
return false;
} else {
file://确认email,并且设置帐号为已经激活
$feedback .= ' User Account Updated - You Are Now Logged In ';
user_set_tokens(db_result($result,0,'user_name'));
$sql="UPDATE user SET email='$email',is_confirmed='1' WHERE confirm_hash='$hash'";
$result=db_query($sql);
return true;
}
} else {
$feedback .= ' HASH INVALID - UPDATE FAILED ';
return false;
}
}
function user_send_confirm_email($email,$hash) {
/*
这个函数在首次注册或者改变email地址时使用
*/
$message = "Thank You For Registering at Company.com".
"\nSimply follow this link to confirm your registration: ".
"\n\nhttp://www.company.com/account/confirm.php?hash=$hash&email=". urlencode($email). "\n\nOnce you confirm, you can use the services on PHPBuilder.";
mail ($email,'Registration Confirmation',$message,'From: noreply@company.com');
}
?>
评论:或许我们在用户认证方面不是采用这种方法,而是采用session等方式,不过这篇文章在如何进行加密和确认方面,还是对我们有所启发的。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Am 29. Juli nahm Yu Chengdong, Huawei-Geschäftsführer, Vorsitzender von Terminal BG und Vorsitzender von Smart Car Solutions BU, an der Übergabezeremonie des 400.000sten Neuwagens von AITO Wenjie teil, hielt eine Rede und kündigte an, dass die Modelle der Wenjie-Serie dies tun werden Dieses Jahr auf den Markt kommen Im August wurde die Huawei Qiankun ADS 3.0-Version auf den Markt gebracht und es ist geplant, die Upgrades sukzessive von August bis September voranzutreiben. Das Xiangjie S9, das am 6. August auf den Markt kommt, wird erstmals mit dem intelligenten Fahrsystem ADS3.0 von Huawei ausgestattet sein. Mit Hilfe von Lidar wird Huawei Qiankun ADS3.0 seine intelligenten Fahrfähigkeiten erheblich verbessern, über integrierte End-to-End-Funktionen verfügen und eine neue End-to-End-Architektur von GOD (allgemeine Hinderniserkennung)/PDP (prädiktiv) einführen Entscheidungsfindung und Kontrolle), Bereitstellung der NCA-Funktion für intelligentes Fahren von Parkplatz zu Parkplatz und Aktualisierung von CAS3.0

Am 11. April kündigte Huawei erstmals offiziell den 100-Maschinen-Upgradeplan für HarmonyOS 4.2 an. Dieses Mal werden mehr als 180 Geräte an dem Upgrade teilnehmen, darunter Mobiltelefone, Tablets, Uhren, Kopfhörer, Smart-Screens und andere Geräte. Im vergangenen Monat haben mit dem stetigen Fortschritt des HarmonyOS4.2-Upgradeplans für 100 Maschinen auch viele beliebte Modelle, darunter Huawei Pocket2, Huawei MateX5-Serie, Nova12-Serie, Huawei Pura-Serie usw., mit der Aktualisierung und Anpassung begonnen, was bedeutet, dass dass es mehr Benutzer von Huawei-Modellen geben wird, die das gemeinsame und oft neue Erlebnis von HarmonyOS genießen können. Den Rückmeldungen der Benutzer zufolge hat sich das Erlebnis der Modelle der Huawei Mate60-Serie nach dem Upgrade von HarmonyOS4.2 in allen Aspekten verbessert. Vor allem Huawei M

Kürzlich gab Huawei bekannt, dass es im September ein neues intelligentes tragbares Produkt mit dem Xuanji-Sensorsystem auf den Markt bringen wird, bei dem es sich voraussichtlich um die neueste Smartwatch von Huawei handeln wird. Dieses neue Produkt wird fortschrittliche Funktionen zur Überwachung der emotionalen Gesundheit integrieren. Das Xuanji Perception System bietet Benutzern eine umfassende Gesundheitsbewertung mit seinen sechs Merkmalen – Genauigkeit, Vollständigkeit, Geschwindigkeit, Flexibilität, Offenheit und Skalierbarkeit. Das System nutzt ein Super-Sensing-Modul und optimiert die Mehrkanal-Optikpfad-Architekturtechnologie, wodurch die Überwachungsgenauigkeit grundlegender Indikatoren wie Herzfrequenz, Blutsauerstoff und Atemfrequenz erheblich verbessert wird. Darüber hinaus hat das Xuanji Sensing System auch die Erforschung emotionaler Zustände auf Basis von Herzfrequenzdaten erweitert. Es beschränkt sich nicht nur auf physiologische Indikatoren, sondern kann auch den emotionalen Zustand und das Stressniveau des Benutzers bewerten. Es unterstützt die Überwachung von mehr als 60 Sportarten Gesundheitsindikatoren, die kardiovaskuläre, respiratorische, neurologische, endokrine,

Das Java-Framework-Design ermöglicht Sicherheit, indem es Sicherheitsanforderungen mit Geschäftsanforderungen in Einklang bringt: Identifizierung wichtiger Geschäftsanforderungen und Priorisierung relevanter Sicherheitsanforderungen. Entwickeln Sie flexible Sicherheitsstrategien, reagieren Sie schichtweise auf Bedrohungen und nehmen Sie regelmäßige Anpassungen vor. Berücksichtigen Sie architektonische Flexibilität, unterstützen Sie die Geschäftsentwicklung und abstrakte Sicherheitsfunktionen. Priorisieren Sie Effizienz und Verfügbarkeit, optimieren Sie Sicherheitsmaßnahmen und erhöhen Sie die Sichtbarkeit.

So implementieren Sie Best Practices für die PHP-Sicherheit PHP ist eine der beliebtesten Backend-Webprogrammiersprachen, die zum Erstellen dynamischer und interaktiver Websites verwendet wird. Allerdings kann PHP-Code verschiedene Sicherheitslücken aufweisen. Um Ihre Webanwendungen vor diesen Bedrohungen zu schützen, ist die Implementierung bewährter Sicherheitspraktiken von entscheidender Bedeutung. Eingabevalidierung Die Eingabevalidierung ist ein wichtiger erster Schritt zur Validierung von Benutzereingaben und zur Verhinderung böswilliger Eingaben wie SQL-Injection. PHP bietet eine Vielzahl von Eingabevalidierungsfunktionen, wie zum Beispiel filter_var() und preg_match(). Beispiel: $username=filter_var($_POST['username'],FILTER_SANIT

Um Ihre Struts2-Anwendung zu schützen, können Sie die folgenden Sicherheitskonfigurationen verwenden: Nicht verwendete Funktionen deaktivieren. Inhaltstypprüfung aktivieren. Eingaben validieren. Sicherheitstokens aktivieren. CSRF-Angriffe verhindern. Verwenden Sie RBAC, um den rollenbasierten Zugriff einzuschränken

Bei der Implementierung von Algorithmen für maschinelles Lernen in C++ sind Sicherheitsaspekte von entscheidender Bedeutung, einschließlich Datenschutz, Modellmanipulation und Eingabevalidierung. Zu den Best Practices gehören die Einführung sicherer Bibliotheken, die Minimierung von Berechtigungen, die Verwendung von Sandboxing und die kontinuierliche Überwachung. Der praktische Fall demonstriert die Verwendung der Botan-Bibliothek zum Ver- und Entschlüsseln des CNN-Modells, um sicheres Training und Vorhersage zu gewährleisten.

Laut Nachrichten vom 9. Juli haben Tester von Xiaomi.EU, einer bekannten offiziellen Version des Systems, kürzlich herausgefunden, dass Xiaomi kürzlich neue Maßnahmen ergriffen hat, um auf dem chinesischen Festland verkaufte Geräte daran zu hindern, die internationale Version von Xiaomi zu installieren. Wenn ein Benutzer versucht, die internationale Version des Systems auf einer chinesischen Version des Geräts zu installieren, zeigt das Gerät beim Booten eine nicht unterstützte Meldung an und kann nicht auf das System zugreifen. Dieser Mechanismus kann die Marktversion identifizieren, zu der die Hardware gehört. Wenn bei Xiaomi-Mobiltelefonen, die auf dem chinesischen Festland verkauft werden, festgestellt wird, dass die internationale Version des Systems installiert ist, kann es nicht normal gestartet werden. Testergebnisse zeigen, dass das geflashte Gerät im Boot-Assistenten „Nicht unterstützte Software“ (nicht unterstützte Software) anzeigt und darauf hinweist, dass die Verwendung dieser Version Sicherheitsrisiken mit sich bringen kann. Derzeit hat Xiaomi
