我正在开发一个使用php + socket.io的私人消息系统的网站。
从一开始我使用public function delete(User $user){
$user = User::findOrFail($user->id);
$surveys=Survey::where('user_id',$user->id)->get();
$user->delete();
foreach($surveys as $survey){
$survey->delete();
}
return redirect('/admin/user');
}
Route::get('/admin/{user}/delete','AdminController@delete')->name('delete.user')->middleware('is_admin');
将sender_id
,recipient_id
和text
传递给socket.io,但后来意识到这很容易被篡改并想要使用我的php会话以某种方式确保socket.emit
确实是sender_id
。
我现在有以下设置,但我真的不明白如何将会话从index.php传递到app.js,然后连接到app.js中的redis-server以获取保存user_id的PHPSESSID。
我的代码现在看起来如下所示,但显然现在错过了redis部分,我真的很想帮助它。
谢谢!
的index.php
sender_id
app.js
<?php
session_start();
if ($_SESSION['user_id'] == false){
header("Location:login.php");die;
}
?>
<script>
var socket = io('https://app01.dev.domain.com:8895');
socket.on('connect', function(){
console.log("Connected to websockets");
});
socket.on('event', function(data){});
socket.on('disconnect', function(){});
$('.chat-message').keypress(function (e) {
if (e.which == 13) {
console.log("send message");
var friend_id = $(this).attr('id');
friend_id = friend_id.split("-");
friend_id = friend_id[3];
var obj = {
recipient_id: friend_id,
text: $(this).val()
};
socket.emit('chat_message', obj);
$(this).val('');
return false;
}
});
</script>
答案 0 :(得分:1)
HTTP本身并不能防止MITM攻击,为防止MITM需要对服务器证书进行攻击。
要防止用户被欺骗,您需要身份验证,例如登录或Dropbox等秘密令牌。
添加证书固定,这只是一个行话,用于通过验证服务器发送的证书来验证您是连接到正确的服务器而不是MITM。 MITM过去比较困难,但WiFi可以很容易地连接到Hot Sports的错误端点,即使在家里我也看到了这一点。