Rumah  >  Artikel  >  hujung hadapan web  >  Analisis ringkas mengenai tiga aspek keselamatan biasa Node

Analisis ringkas mengenai tiga aspek keselamatan biasa Node

青灯夜游
青灯夜游ke hadapan
2023-02-13 19:26:352160semak imbas

Artikel ini akan membincangkan tiga langkah berjaga-jaga keselamatan biasa dalam Node Ia menerangkan terutamanya tiga aspek keselamatan semasa membangunkan pelayan Node.

Analisis ringkas mengenai tiga aspek keselamatan biasa Node

1. Kaedah pencegahan

1 Ini adalah serangan paling primitif dan paling mudah yang telah muncul sejak web2.0 dengan interaksi manusia-komputer

Ia terutamanya melibatkan memasukkan serpihan sql Akhirnya, Disambungkan ke dalam a sekeping kod sql serangan

Apabila kami menggunakan nod untuk menyambung ke pangkalan data, kami biasanya menulis pernyataan

sql
pada bahagian nod untuk menanyakan pangkalan data, seperti berikut

Tetapi jika saya

membuatnya lulus dalam pernyataan sql, ia akan menjadi sangat berbahaya [Tutorial berkaitan yang disyorkan:
-- 这是一个简易的登录判断sql语句, 输入 username 和 password 在 users 表中进行用户登录验证,  然后获取用户的地址和年龄
select address, age from users where username=${username} and password=${password}
tutorial video nodejs

, 在 username 中做点手脚Pengajaran pengaturcaraan] Melihat pada coretan kod di atas, anda boleh menemuinya,

, jadi jika saya secara dinamik mendapatkan medan nama pengguna yang dimasukkan oleh pengguna dalam pertanyaan sql, jika penghujungnya ialah --, syarat kata laluan berikut akan disahkan Mengalih keluar
-- username 输入为 ali -- 
-- 上面这段 sql 就会被解析成这样 
select address, age from users where username=ali -- and password=${password}

bermakna tidak kira apa kata laluan -- 在sql中是属于注释的存在 pengguna masukkan, selagi medan nama pengguna wujud dalam pangkalan data, maklumat yang sepadan boleh

diperoleh

sudah tentu anda juga boleh terus menyambung pernyataan sql yang memadam pangkalan data kemudian, yang sebenarnya lebih berbahaya

Pelan pemprosesan

-- username 输入为 ali; delete from users where username="ali" --
-- 就会拼接成下面这种语句 这是极其危险的
select address, age from users where username=ali; delete from users where username="ali" -- and password=${password}

Sambung ke pangkalan data dalam pembangunan nod dan splice Pernyataan sql adalah menggunakan pakej mysql npm , jadi terdapat juga fungsi pemprosesan yang sepadan dengan serangan suntikan sql dalam pakej ini

boleh digunakan untuk membungkus semua data dari lapisan hadapan, fungsi ini akan menambah , supaya tiada komen dalam pernyataan sql

mysql.escape函数-- 或者其他的特殊字符进行转义2 . maklumat

Apabila kami membangunkan pelayan Node, kami hanya perlu memproses semua data yang datang dari bahagian hadapan, iaitu, melarikan diri daripada aksara khas

penyelesaian pemprosesan

Membangunkan pelayan Node,

, hanya gunakan pakej ini untuk semua data yang dihantar dari bahagian hadapan(所有的转义字符后都需要 加上;这个特殊符号 由于无法演示 我截图的时候去掉了

Analisis ringkas mengenai tiga aspek keselamatan biasa Node3. Penyulitan kata laluan

Jika pangkalan data kami digodam, perkara terakhir yang tidak sepatutnya dibocorkan ialah maklumat pengguna

使用 xss 这个npm包Kerana penyerang boleh gunakan kata laluan akaun pengguna untuk cuba log masuk ke sistem lain

Kaedah pemprosesan

Ini memerlukan maklumat dalam pangkalan data

sebelum ia disimpan. dalam pangkalan data

Sudah tentu, kunci ini perlu eksklusif untuk anda. Ia tidak boleh dibocorkan

atau ia boleh disulitkan melalui algoritma kriptografi lain

2. Kesimpulan.

Saya juga telah belajar tentang Node baru-baru ini adalah mengenai Membangunkan pelayan Node, tiga langkah keselamatan biasa

不用明文存储用户的密码把密码通过自定义 key 加密一下Alamat asal: https://juejin.cn/. post/7199329705706324027

Lebih banyak pengetahuan berkaitan nod, Sila lawati:

tutorial nodejs!

Atas ialah kandungan terperinci Analisis ringkas mengenai tiga aspek keselamatan biasa Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam