所以这就是场景 我有一个C#程序。 它会将序列号发送到我的网站。 (例如:www.example.com/LicenseCheck.php) 让我们说它发送1234-1234-1234作为序列。
然后licenseCheck.php将连接到我的mysql:
<?php
$username = "your_name";
$password = "your_password";
$hostname = "localhost";
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";
?>
然后它将从有效的串行表中进行“选择”,如果表中存在许可证,则表示它是有效的序列号。
基本上,我试图找到什么是一个很好的方法来解决这个问题。 我最担心的是存储“用户名”,“密码”的位置。基本上我只有一个用户只有读取权限。
我想尽可能隐藏用户名和密码,并希望以安全的方式处理此问题。
“安全”是什么意思?只是一种方法可以防止未经授权的用户进入我的数据库。
感谢您的帮助。
答案 0 :(得分:1)
不再使用mysql函数。我将为您的解决方案提供一个mysqli程序方法。我还将提供一种保存密码的安全方法。
基本的mysqli连接和查询:
$queryString = "SELECT COUNT(*) FROM table WHERE userName = ? AND password=?";//not the question marks
//the question marks are used to bind our parameters/variables so the query string cannot be adjusted I believe?
$DBH=mysqli_connect('local','user','pass');
mysqli_select_db($DBH,'database');
$query = mysqli_prepare($DBH,$queryString);
mysqli_bind_param($query,'ss',$username,$passwordHASH);//the second parameter declares the datatypes
mysqli_execute($query);
//mysqli_bind_result($results); ||not needed in this situation but this is how you'd get results from the database
if(mysqli_fetch($query)){ //adding && $results = 1 would insure there is only one record
//username and password match
}
else{
//error builder etc
}
现在,为了您的密码,我建议使用hmac_hash()
来提供保护。将密码插入数据库时,确保在查询数据库时它们hmac_hash()
,这些都受到保护。
$passwordHASH = hash_hmac('sha512',$hashThis, '&R4nD0m^');
因此,如果COUNT(*)
如果用户名和密码等于$username
和$passwordHASH
则返回1,则基本上您的查询/获取将返回true。
但是已经说过所有你不能在C#中使用#include <mysql.h>
mysql库?
答案 1 :(得分:0)
看一下this answer的第二个要点。基本上,您需要将MySQL连接详细信息放在文档根目录之外的配置文件中(例如public_html /等),然后需要该文件。