Rumah >pembangunan bahagian belakang >Golang >Apakah kelemahan keselamatan dalam rangka kerja Golang dan bagaimana untuk menghalangnya?
Kemungkinan kelemahan keselamatan dalam rangka kerja Golang termasuk: Suntikan SQL, XSS, CSRF, kemasukan fail dan traversal laluan. Untuk mengelakkan kelemahan ini, langkah-langkah berikut harus diambil: pengesahan input keluaran melarikan diri;
Rangka kerja Golang mungkin mempunyai kelemahan keselamatan berikut:
.
atau ..
. . .
或..
字符来访问框架之外的文件或目录。为了防止这些漏洞,框架开发人员和用户应考虑以下措施:
考虑以下代码段:
func getUsers(username string) (*User, error) { rows, err := db.Query("SELECT * FROM users WHERE username = ?", username) if err != nil { return nil, err } var user User for rows.Next() { if err := rows.Scan(&user.ID, &user.Username, &user.Email); err != nil { return nil, err } } return &user, nil }
此代码段易受 SQL 注入攻击,因为 username
值未经验证。以下代码段改进了安全措施:
func getUsers(username string) (*User, error) { stmt, err := db.Prepare("SELECT * FROM users WHERE username = ?") if err != nil { return nil, err } rows, err := stmt.Query(username) if err != nil { return nil, err } var user User for rows.Next() { if err := rows.Scan(&user.ID, &user.Username, &user.Email); err != nil { return nil, err } } return &user, nil }
此修改使用 db.Prepare()
来生成一个预准备的语句,它可以防止 SQL 注入,因为 username
nama pengguna
tidak disahkan. Coretan kod berikut meningkatkan keselamatan: 🎜rrreee🎜Pengubahsuaian ini menggunakan db.Prepare()
untuk menjana pernyataan yang disediakan, yang menghalang suntikan SQL kerana nilai username
Escaped sebelum melaksanakan pertanyaan itu. 🎜Atas ialah kandungan terperinci Apakah kelemahan keselamatan dalam rangka kerja Golang dan bagaimana untuk menghalangnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!