Input and raw_input

Như trong python 2 thì raw_input đảm bảo tính bảo mật hơn input.
Nhưng trong python 3 thì lệnh raw_input không còn nữa. không biết sử dụng input có đảm bảo tính bảo mật ko.

Như anh Khoa NTA nói ở đây thì nó vô cùng nguy hiểm khi sử dụng input không biêt nó sẽ như thế nào trong python 3
Sự khác biệt giữa `input` và `raw_input` trong Python?

Trong Python2 input([prompt]) tương đương với eval(raw_input([prompt])). Và bạn sẽ đi tìm hiểu hàm eval() (evaluate - nó xem dữ liệu bạn đưa vào là code và thực thi nó) :joy: Và rằng bạn sẽ được khuyến cáo là không nên dùng input() trong python2 (vì lý do bảo mật), cho nên bạn phải dùng raw_input() trong tất cả các bài tập của bạn.

Một vài ví dụ đơn giản với eval:

import sys
def hello():
    print 'hello(): this function has been called.'

somevar = 69

# gọi 4 lần cho 4 ví dụ :3 
print input('eval [1]: ')
print input('eval [2]: ')
print input('eval [3]: ')
print input('eval [4]: ')
#########
Output:

eval [1]: hello()
hello(): this function has been called.

eval [2]: somevar
69

eval [3]: (lambda : sys.stdout.write("Hello world\n"))()
Hello world

eval [4]: os.system('uname -a')
Linux kproj 4.6.0-kali1-amd64 #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux

Bạn thấy đó, nếu bạn dùng nó trong cách script của bạn thì nguy hiểm biết chừng nào khi họ lợi dụng nó như lỗ hỗng để thực thi lệnh bất hợp pháp.

1 Like

Trong python 3.x, input() hoạt động giống raw_input(), ko còn hàm raw_input() nữa.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?