PDA

View Full Version : استفاده از soap



under22
چهارشنبه 08 بهمن 1393, 10:11 صبح
داخل پروژم میخام از nusoap استفاده کنم .
اول میخاستم بدونم تابع setCredentials دقیقا کارش چی هست و چه نقشی تو امنیت داده ها داره و چطوری میشه ازش استفاده کرد؟؟
تو نحوه استفاده از soap مشکلی ندارم داخل سرور یه تابع میسازم و register میکنم و نوع ورودی و خروجیش رو مشخص میکنم نمونه کد هام رو هم میزارم اما سوال اصلیم اینه که میخام این سرویس کاملا امن باشه اما چون آشنایی کاملی با nusoap ندارم نمیدونم باید چیکار کنم دوستانی که قبلا کار کردن بگن چطوری میشه این نمونه کد ها رو امنیت تر کرد ؟؟؟




<?php

include 'nusoap_client.php';
//func1
function reza($name='name',$email='email',$phone='phone')
{
return "myname is $name and email is $email and phone $phone";
}
//func2
function get_message($number=10)
{
return "You get $number";
}
//func3
function get_message2()
{
return time();
}

$namespace = 'http://example.org';
$server = new nusoap_server();
$server->soap_defencoding = 'UTF-8';

$server->configureWSDL('hamid_webservice');
$server->wsdl->schemaTargetNamespace = $namespace;
//func1
$server->register('reza',
array('name' => 'xsd:string', 'email' => 'xsd:string','phone' => 'xsd:integer'),
array('return' => 'xsd:string'),'http://soapinterop.org');

//func2
$server->register('get_message',
array('number' => 'xsd:integer'),
array('return' => 'xsd:string'),'http://soapinterop.org');
//func3
$server->register('get_message2',
array(),
array('return' => 'xsd:string'),'http://soapinterop.org');




$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA'])
? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
$server->service($POST_DATA);
exit();

و فایل کلاینت


<?php
include 'nusoap_client.php';

$client = new nusoap_client('http://localhost/a_test/hamid/server.php?wsdl');
$err = $client->getError();
if($err)
{
print_r($err);
die;
}
//func1

echo $client->call('reza',array('reza','info@rezaonline.net','93 60'));


echo '<hr>';

echo $client->call('get_message',array(25));


echo '<hr>';

echo $client->call('get_message2');

under22
پنج شنبه 09 بهمن 1393, 09:26 صبح
up...................

aensiyeh
پنج شنبه 09 بهمن 1393, 09:44 صبح
این چه وب سروسی هست؟؟

rezaonline.net
پنج شنبه 09 بهمن 1393, 09:50 صبح
درخواست ها از طریق http ارسال میشه .
و چون میشه هر کسی درخواست بفرسته شما باید
در صورت تمایل آی پی ارسال کننده رو بررسی کنید .

موارد عمومی شبیه sqlinjection و ... رو نیز در نظر داشته باشید .

نوع داده ها رو بررسی کنید اگر قراره int باشه حتما چک کنید باشه !

دیگه چیز خاصی نداره

under22
پنج شنبه 09 بهمن 1393, 10:32 صبح
این چه وب سروسی هست؟؟
قراره با برنامه اندروید خودمون تبادل اطلاعات داشته باشه

under22
پنج شنبه 09 بهمن 1393, 10:34 صبح
درخواست ها از طریق http ارسال میشه .
و چون میشه هر کسی درخواست بفرسته شما باید
در صورت تمایل آی پی ارسال کننده رو بررسی کنید .

موارد عمومی شبیه sqlinjection و ... رو نیز در نظر داشته باشید .

نوع داده ها رو بررسی کنید اگر قراره int باشه حتما چک کنید باشه !

دیگه چیز خاصی نداره
ممنون
یکی از دوستان میگفت بهتره از https استفاده کنم که امن تر باشه
نوع ارسال وقتی داریم تابع رو ثبت میکنیم مشخص میکنیم آیا باید تو تابع دوباره نوعش و یکسری چیزا باید بررسی بشه ؟؟؟
به نظر شما آی پی رو چطوری بررسی کنم

rezaonline.net
پنج شنبه 09 بهمن 1393, 15:32 عصر
یکی از دوستان میگفت بهتره از https استفاده کنم که امن تر باشه
https برای رمز نگاری اطلاعات هست نه خود اطلاعات
به طور مثال اگه شما xss رو مثلا بررسی نکنید من به وبسرویس وصل بشم و بفرستم

<script>alert(1)
اونوقت https این وسط چیکار میکنه دقیقا ؟
:لبخند:


نوع ارسال وقتی داریم تابع رو ثبت میکنیم مشخص میکنیم آیا باید تو تابع دوباره نوعش و یکسری چیزا باید بررسی بشه ؟؟؟
بله داده ها از خارج میان ، بهشون اعتماد نکنید


به نظر شما آی پی رو چطوری بررسی کنم
یا قمر بنی هاشم


$_SERVER['REMOTE_ADDR']

under22
پنج شنبه 09 بهمن 1393, 16:39 عصر
https برای رمز نگاری اطلاعات هست نه خود اطلاعات
به طور مثال اگه شما xss رو مثلا بررسی نکنید من به وبسرویس وصل بشم و بفرستم

<script>alert(1)
اونوقت https این وسط چیکار میکنه دقیقا ؟
:لبخند:


بله داده ها از خارج میان ، بهشون اعتماد نکنید


یا قمر بنی هاشم


$_SERVER['REMOTE_ADDR']
:قهقهه:
اون قسمت xss رو میدونم باید چیکار کنم منظورم این بود که باید برای امن بودن خط انتقال باید از https استفاده کنم .
اما در مورده آیپی :لبخند: اینقدر بی سواد نیستم که اینو ندونم منظورم این بود که فرق آیپی که مشتریم هست با آیپی که محاجم هست رو از کجا تشخیص بدم

rezaonline.net
پنج شنبه 09 بهمن 1393, 18:45 عصر
اون قسمت xss رو میدونم باید چیکار کنم منظورم این بود که باید برای امن بودن خط انتقال باید از https استفاده کنم .
https برای رمز نگاری بین انتقال هست ، برای شنود ، همین .

شما یه کاری کن
یه کلید تعریف کن
مثلا n تا پارامتر فرستادن
هر n تا رو کنار هم بذار + یه کلیدی مثلا 123456 بعد یه md5 بزن بعد اونو هم ارسال کن.

توی سرور هم میگیری همین کارا رو با پارامترها بکن و md5 بزن و مقایسه کن با هش دریافتی /

اما در مورده آیپی :لبخند: اینقدر بی سواد نیستم که اینو ندونم منظورم این بود که فرق آیپی که مشتریم هست با آیپی که محاجم هست رو از کجا تشخیص بدم
توی دیتابیست ذخیره کن ، مثل درگاههای پرداخت و اینا

under22
پنج شنبه 09 بهمن 1393, 20:37 عصر
https برای رمز نگاری بین انتقال هست ، برای شنود ، همین .

شما یه کاری کن
یه کلید تعریف کن
مثلا n تا پارامتر فرستادن
هر n تا رو کنار هم بذار + یه کلیدی مثلا 123456 بعد یه md5 بزن بعد اونو هم ارسال کن.

توی سرور هم میگیری همین کارا رو با پارامترها بکن و md5 بزن و مقایسه کن با هش دریافتی /

توی دیتابیست ذخیره کن ، مثل درگاههای پرداخت و اینا
آین روش هش که گفتید خوب بود ممنون ازش استفاده میکنم اما نکته ip رو نفمیدم مثلا من ip کسایی که بهم وثل میشن و با هش و اطلاعات ارسالی میفهمنن اونا مشتری هام هستن اما کسانی که اطلاعاتشون غلط هست ip اونا رو ذخیره نمیکنم اما خب ip مشکل داره مثلا گاهی موقع ها اشتراکی هست و اینکه عوض میشه .
میشه این روشی که گفتید درگاه ها ازش استفاده میکنن رو کامل بگید

rezaonline.net
پنج شنبه 09 بهمن 1393, 23:56 عصر
اونا مشتری هام هستن اما کسانی که اطلاعاتشون غلط هست ip اونا رو ذخیره نمیکنم اما خب ip مشکل داره مثلا گاهی موقع ها اشتراکی هست و اینکه عوض میشه .
اگر مشتری هات آی پی شون عوض میشه پس آی پی رو چک نکن اما خب اتصالهای غلط رو آی پی شو ذخیره کن از یه تعدادی بیشتر رفت بن کن .


میشه این روشی که گفتید درگاه ها ازش استفاده میکنن رو کامل بگید
تا حالا درگاه گرفتید ؟
وقتی درگاه میگیرید مثلا از بانک ملت باید آی پی تون رو اعلام کنید دیگه فقط از آی پی شما درخواستها پذیرش میشه (آی پی سرور منظورم هست)