|
|
|
พี่ๆ ช่วยหนูหน่อยเรืองความปลอดภัยค่ะ ของ code php ค่ะ กลัวโดน Injection |
|
|
|
|
|
|
|
พี่ๆ ช่วยหนูหน่อยเรืองความปลอดภัยค่ะ พอดี หนูมี code ต่อไปนี้เลยอยากคิดว่ามีความปลอดภัยสูงแล้วยัง อ่ะค่ะ
Code (PHP)
<?php
$sr = "host";
$user = "sa";
$pass = "123456";
$accdb = "account";
$acctab = "account";
$usercol = "id";
function mssql_connect_ini($sr,$user,$pass) {
$mssql_connect = mssql_connect($sr, $user, $pass) or die ("<strong>เกิดข้อผิดพลาด</strong>");
if ((strlen($sr) == 0) || (strlen($user) == 0) || (strlen($pass) == 0)) {
echo "<strong>อิอิ</strong>";
}
}
function mssql_account_ini($accdb) {
$mssql_select_db = mssql_select_db($accdb) or die ("<strong>เกิดข้อผิดพลาด</strong>");
if (strlen($accdb) == 0) {
echo "<strong>อิอิ</strong>";
}
}
mssql_connect_ini($sr,$user,$pass);
mssql_account_ini($accdb);
$pusername = @$_POST['username'];
$ppassword = @$_POST['password'];
$prpassword = @$_POST['rpassword'];
if (isset($_POST['submit']) == true) {
$username = preg_replace("/[^a-zA-Z0-9\-\_\!\$\#\@\^\&\*\(\)\^\+\ \.\?]/", "", $pusername);
$password = preg_replace("/[^a-zA-Z0-9\-\_\!\$\#\@\^\&\*\(\)\^\+\ \.\?]/", "", $ppassword);
if ((isset($_POST['submit']) == true) and (strlen($pusername) < 3) || (strlen($pusername) > 15)) {
echo "ไอดีต้องมีความยาว3-15ตัวอักษร";
}
else if ((isset($_POST['submit']) == true) and ((strlen($ppassword) < 3) || (strlen($ppassword) > 15) || (strlen($prpassword) < 3) || (strlen($prpassword) > 15))) {
echo "รหัสผ่านต้องมีความ3ถึง15ตัวอักษร";
}
else if ((isset($_POST['submit']) == true) and ($ppassword != $prpassword)) {
echo "รหัสผ่านไม่ตรงกัน";
}
else if ((isset($_POST['submit']) == true) and (($pusername == $ppassword) || ($pusername == $prpassword))) {
echo "ไอดีและรหัสผ่านไม่สามารถเหมือนกันได้";
}
else if (mssql_num_rows(mssql_query("SELECT * FROM $acctab WHERE $usercol = '$username'")) == '0') {
$stmt = mssql_init('createaccount');
mssql_bind($stmt, '@account', strtolower($username), SQLVARCHAR, false, false, 15);
mssql_bind($stmt, '@password', strtolower($password), SQLVARCHAR, false, false, 36);
mssql_execute($stmt) or die ("<strong>เกิดข้อผิดพลาด</strong>");
mssql_free_statement($stmt);
echo "ID " . $username . " สามารถใช้งานได้แล้ว ";
}
else {
echo "ID นี้มีอยู่ในระบบแล้ว.";
}
}
?>
<br>
<center>
<form method ="post" action="#">
<div align="center">
<table width="268" height="112" border="0" align="center">
<tr>
<td>ID</td>
<td><input name="username" type="username"></td>
</tr>
<tr>
<td>Password</td>
<td><input name="password" type="password"></td>
</tr>
<tr>
<td>RePassword</td>
<td><input name="rpassword" type="password"></td>
</tr>
</table>
<p><input name="submit" type="submit" value="สมัครสมาชิก">
</td>
</p>
</div>
</form>
</center>
Tag : PHP, Ms SQL Server 2005
|
|
|
|
|
|
Date :
2011-08-20 20:34:29 |
By :
อ๊อฟ |
View :
1076 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mysql_real_escape_string()
Code (PHP)
<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
?>
|
|
|
|
|
Date :
2011-08-20 20:54:47 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ช่วยอธิบายอีกนิด หนูใช้ mssql น่ะค่ะไม่ใช้ myssql อิอิ
|
|
|
|
|
Date :
2011-08-20 23:29:30 |
By :
อ๊อฟ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
น่าจะใช้ร่วมกันได้ครับ
|
|
|
|
|
Date :
2011-08-20 23:33:24 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ได้อ่ะค่ะพี่ งงหมดแล้ว ลองศึกษาจากเว็ป นอก _real_escape_string มันบอกว่า
If your using MSSQL Server there is no mssql_real_escape_string, only MySQL and MySQLi have it, at least I didn't find it:
|
|
|
|
|
Date :
2011-08-21 00:16:42 |
By :
อ๊อฟ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ mysql_real_escape_string(..) น่าจะได้นะครับ ทดลองดู
|
|
|
|
|
Date :
2011-08-21 01:00:22 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|