مهدی
4 سال پیش توسط مهدی مطرح شد
5 پاسخ

امنیت داده ها در وبسرویس لاراول

سلام دوستان
ما یه وبسرویس با لاراول ایجاد کردیم که از پکیج Passport هم استفاده میکنیم که این وبسرویس به یه اپلیکیشن سرویس میده
حالا میخوایم این تبادل اطلاعات به شکل ساده جی سونی نباشه بلکه در کل ریسپانسها تبادل اطلاعات امن تر اتفاق بیفته ، یعنی کلیه ریسپانسها با یه الگوریتمی رمزنگاری بشن که بتونیم در سمت اندروئید هم رمزگشایی کنیم
لطفا دوستانی که تجربه دارن یه راهنمایی بکنید


ثبت پرسش جدید
محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@mehdi539
سلام.
قاعدتا امنیت رو همون passport با Auth تامین میکنه اما اگه می خواهید که داده هاتون رو رمز نگاری کنید، باید خودتون یک الگوریتم بنویسید که داده هاتون رو انکود کنه و از اون طرف هم بتونه همون رو دیکود کنه.


مهدی
تخصص : توسعه دهنده
@mehdi539 4 سال پیش آپدیت شد
0

@mohsenbostan @hesammousavi عزیز
میشه با مثالی توضیح بدید
امکان خود لاراول :
Crypt::encrypt($result);
کلیدی نمیگره ؟
چون برنامه نویس سمت اندرویید دو تا کلید رمزنگاری با الگوریتم AES رو فرستاده که باید ریسپانس رو با اونا رمز کنم و بفرستم
iv
key
اینا در لاراول کجا باید وارد بشن


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش آپدیت شد
0

@mehdi539
منظور از انکود همون رمزنگاریه.
Encryption فقط در خود لاراول کار میکنه یعنی شما نمی تونید سمت اندروید اون رو دیکود کنید.
بهتره که یک الگوریتم بسازید که در هر زبانی قابل استفاده باشه و بتونید باهاش دیتا رو انکد و دیکود کنید.

مثال زیر در پایتون هستش اما خیلی رمزنگاری مناسب و قوی هستش :

from pyDes import *

def encode(data,password):
    k = des(password, CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
    d = k.encrypt(data)
    return d

def decode(data,password):
    k = des(password, CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
    d = k.decrypt(data)
    return d

x = encode('John Doe', 'mypass12')
y = decode(x,'mypass12')

print x
print y

خروجی بالا :

³.\Þ\åS¾+æÅ`;Ê
John Doe

این هم یک مثال در php :

<?php
define("ENCRYPTION_KEY", "!@#$%^&*");
$string = "This is the original data string!";

echo $encrypted = encrypt($string, ENCRYPTION_KEY);
echo "<br />";
echo $decrypted = decrypt($encrypted, ENCRYPTION_KEY);

/**
 * Returns an encrypted & utf8-encoded
 */
function encrypt($pure_string, $encryption_key) {
    $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryption_key, utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
    return $encrypted_string;
}

/**
 * Returns decrypted original string
 */
function decrypt($encrypted_string, $encryption_key) {
    $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, $encryption_key, $encrypted_string, MCRYPT_MODE_ECB, $iv);
    return $decrypted_string;
}
?>

مهدی
تخصص : توسعه دهنده
@mehdi539 4 سال پیش آپدیت شد
0

@mohsenbostan عزیز
این دو تا تابع که توابع توکار خود php هستن ، درست ولی بحث اینجاست که این توابع مقدار iv رو خودشون تولید میکنن و من نمیتونم بصورت پارمتری بهش پاس بدم

مثلا الان چطور میشه متن رمز شده زیر رو بازگشایی کرد :

result: Fx2lYb0yrI+oho2RULQ=

iv: 1234567890123456
key: 1234567890123456

توسط برنامه نویس اندروئید به طریقه زیر رمز شده :
Encrypt: AES/CTR/NoPadding
Encode: Base64


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@mehdi539
همون طور که بهتون گفتم باید خودتون یک اگوریتم براش بنویسید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام