Phần 2 SQL Advanced (bài 15)
Với một số kiến thức cơ bản về SQL ở trên bạn có thể làm gì nào ?
Bây giờ ta sẽ thử xét với phương diện của người lập trình web :
Tạo 1 database tên hacker với các trường như sau :
Trích:
create database hacker
use hacker
Create table admin(
[id] numeric not null,
username nvarchar(10) not null,
[password] nvarchar(10) not null,
address nvarchar(30),
phone numeric(10)
)
select * from admin
Insert vào một số data :
Trích:
insert into admin ([id],username,[password],address,phone)
values (1,'admin',12345,'Ha Noi',048324245)
go
insert into admin ([id],username,[password],address,phone)
values (2,'Neo',12345,'Ha Noi',048324245)
Rồi okie ta thấy table admin như sau :
Giờ muốn select những username trong table admin mà có address tại Hà Nội thì câu
query sẽ như sau : (tất cả những giá trị là character thì phải được bao trong dấu quote ')
Trích:
select u
s
Vậy nế
u
Trích:
select u
s
Kết quả
Như trê
n
bằng 'or
sau nó l
à
Mà giá t
thực thi
đằng sa
u
truy vấn
admin ,
Còn về
Như đã
b
đó phải l
Ví dụ :
Trích:
select u
s
UNION
select [
p
Câu lện
h
Khi tạo t
bằng UN
:
Câu tru
y
sername fro
u ta viết thế
sername fro
cũng show
n ta thấy đá
1=1-- thì d
à or 1=1 , n
trị đằng trướ
lệnh này m
u thành chú
n hoàn toàn
đến đây ch
ắ
câu lệnh U
biết câu lện
là tương ứn
sername fro
password] fr
h trên sẽ sho
table bạn đ
NION , dòn
y vấn :
om admin w
này thì sẽ c
om admin w
w ra như trên
áng lẽ ra add
dấu quote đằ
như ta đã biế
ớc là rỗng n
mà or 1=1--
ú thích (tron
hợp lệ và k
ắc bạn đã h
UNION :
nh UNION
ng .
om admin
rom admin
ow cho ta th
ể ý thấy use
ng thứ 2 bạn
where addre
có chuyện g
where addre
n.
dress mang
ằng trước sẽ
ết or là câu
nên SQL sẽ
, 1=1 thì luô
ng SQL quy
ko có lỗi gì
hiểu rồi chứ
dùng để gộ
hấy các use
ername ta g
n thay [pass
ss='Ha No
i
gì xảy ra nh
ss=''or 1=1-
giá trị là H
ẽ là 2 dấu ''
lệnh điều
k
ẽ chạy tiếp t
ôn đúng , c
y định sau d
cả và nó sẽ
p chuỗi lại
ername và p
gán thuộc tín
word] thành
i'
hỉ
--'
Ha Noi nhưn
có nghĩa g
kiện và ở đâ
theo gặp điề
òn dấu -- sẽ
dấu -- là câu
show cho t
với nhau và
password tr
nh là nvarc
h số bất kì (
ng nếu ta th
iá trị trong
ây có nghĩa
ều kiện or th
ẽ biến tất cả
u chú thích)
ta toàn bộ u
à các giá trị
ong table ad
har , vậy nế
(ví dụ 1) th
hay giá trị đó
đó rỗng . V
là hoặc.
hì tất nhiên
ả những thứ
. Như vậy c
username củ
ị trong 2 ch
dmin.
ếu khi truy
hì sẽ báo lỗi
ó
Và
n sẽ
ứ
câu
ủa
huỗi
vấn
sau
Trích:
select u
s
UNION
select 1
Error :
Trích:
Syntax
e
Hô hô e
r
được vì
ra cái ta
b
có tồn tạ
Đây chỉ
cho các
Mà còn
Hàm nà
y
bắt nhữn
Còn các
dondoc
sername fro
from admi
n
error conver
rror báo sai
dòng thứ 2
ble admin .
ại .
là một số
v
bạn !
cách fix th
ì
y có tính nă
ng lỗi trên h
h viết thế n
(vniss)
om admin
n
rting the nv
i cú pháp ,k
ta thay thế
Còn khi á
p
ví dụ để các
ì sao nhỉ , tr
ăng tương tự
hoặc có thể
nào thì phải
varchar valu
ko thể chuyể
giá trị là ki
p dụng trên
c bạn có thể
rong SQL c
ự như hàm
viết = chí
n
nhờ anh Da
ue 'admin' to
ển từ kiểu d
iểu int --> k
web thì đây
hiểu về SQ
có một thứ g
bắt sự kiện
nh ngôn ngữ
arkHawk cá
o a column
dữ liệu nvar
ko cùng loạ
y là dấu hiệ
QL injection
gọi là trigge
n trong Java
ữ lập trình w
ái nhẩy --C
of data typ
rchar (chuỗi
ại dữ liệu ---
ệu cho thấy
n ,mong giú
er
aScript , ta s
web.
huyên gia
pe int.
i) sang int (
->error và s
table admin
úp được gì đ
sẽ viết 1 hàm
(số)
show
n là
đó
m để