banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản  XML
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 21/03/2008 21:41:31 (+0700) | #1 | 120436
hangsachtay
Member

[Minus]    0    [Plus]
Joined: 02/01/2007 19:43:51
Messages: 69
Offline
[Profile] [PM]
Mình xin giới thiệu một phương pháp chống SQL Injection đơn giản nhưng cũng khá hiệu quả

Phương thức hoạt động của nó là kiểm tra các câu truy vấn đầu vào và so sánh với các từ khóa ( là những dạng truy vấn mà Hacker sư dụng để kiểm tra xem website có bị dính SQL Injection hay không ) có trong danh sách, nếu câu truy vấn có nhưng từ trùng với các từ khóa trong danh sách nó sẽ đưa ra cảnh báo và block lại nhưng câu truy vấn đó. Các bạn có thể thêm vào danh sách nhưng từ khóa ( câu truy vấn ) được coi là có hại để tăng cường bảo mật cho website của mình.

Tạo một file có tên "AntiSQLInjection.php" với nội dung như sau:
Code:
<?php
  $cautruyvan = $_SERVER['QUERY_STRING'];
  $tukhoa = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
 			       'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
                   'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
                   'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(',
                   'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm',
                   'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(',
                   'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(',
                   'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall',
                   'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20',
                   'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20',
                   '$_request', '$_get', '$request', '$get', '.system', 'HTTP_PHP', '&aim', '%20getenv', 'getenv%20',
                   'new_password', '&icq','/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow',
                   'HTTP_USER_AGENT', 'HTTP_HOST', '/bin/ps', 'wget%20', 'uname\x20-a', '/usr/bin/id',
                   '/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g\+\+', 'bin/python',
                   'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20', 'ping%20', '.pl', '/usr/X11R6/bin/xterm', 'lsof%20',
                   '/bin/mail', '.conf', 'motd%20', 'HTTP/1.', '.inc.php', 'config.php', 'cgi-', '.eml',
                   'file\://', 'window.open', '<SCRIPT>', 'javascript\://','img src', 'img%20src','.jsp','ftp.exe',
                   'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd',
                   'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', 'admin_', '.history',
                   'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20',
                   'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con',
                   '<script', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from',
                   'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '<?php', '?>', 'sql=');

  $kiemtra = str_replace($tukhoa, '*', $cautruyvan);

  if ($cautruyvan != $kiemtra)
    {
      $cremotead = $_SERVER['REMOTE_ADDR'];
      $cuseragent = $_SERVER['HTTP_USER_AGENT'];

      die( "Phat hien co su tan cong! <br /><br /><b>Viec tan cong nay da bi ngan chan va se duoc ghi nhan lai:</b><br />$cremotead - $cuseragent" );
    }

?>


Thêm đoạn code sau vào file mà bạn muốn bảo vệ:

Code:
<?php

include "AntiSQLInjection.php"; 

?>


Có gì còn chưa hay xin các bạn bổ xung.
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 00:00:54 (+0700) | #2 | 120457
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
Hề hề Query Strings được truyền tới server đôi khi cần các từ trên thì sao bạn smilie vd:username của tui tui đặt là UNION TEAM hay admin_chinh admin_phu thì bạn lock hết sao ? nhất là khi query string chứa một bài post cho một bài viết trên forum chẳng hạn thì đôi khi đầy các từ trên ( HVA thì khỏi nói, liên tục hén smilie )
Cho xin ý kiến nhe bạn.
Thân,
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 02:18:21 (+0700) | #3 | 120476
hangsachtay
Member

[Minus]    0    [Plus]
Joined: 02/01/2007 19:43:51
Messages: 69
Offline
[Profile] [PM]

xnohat wrote:
Hề hề Query Strings được truyền tới server đôi khi cần các từ trên thì sao bạn smilie vd:username của tui tui đặt là UNION TEAM hay admin_chinh admin_phu thì bạn lock hết sao ? nhất là khi query string chứa một bài post cho một bài viết trên forum chẳng hạn thì đôi khi đầy các từ trên ( HVA thì khỏi nói, liên tục hén smilie )
Cho xin ý kiến nhe bạn.
Thân, 


Đó và việc bảo mật của webmaster, các webmaster thường không có user đăng ký các tên nhạy cảm như vậy.

Bạn hãy thử dùng công cụ search trên HVA để tìm từ khóa "UNION" xem có được phép không ?

Để có được sự bảo mật đôi khi người ta sẽ gặp phải những hạn chế đi kèm, không có một công cụ bảo mật nào được gọi là hoàn hảo cả, cái gì cũng có 2 mặt của nó bạn à

Cảm ơn bạn vì những ý kiến đóng góp !
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 02:59:21 (+0700) | #4 | 120493
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa&quot;&gt;
Offline
[Profile] [PM] [ICQ]
@hàng sách tay+ xnohat: Bộ SQL injection chỉ xảy ra trên $_GET thôi hay sao mà thấy các bạn chỉ validate trên $_SERVER['QUERY_STRING'] smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 03:52:58 (+0700) | #5 | 120500
hangsachtay
Member

[Minus]    0    [Plus]
Joined: 02/01/2007 19:43:51
Messages: 69
Offline
[Profile] [PM]

gamma95 wrote:
@hàng sách tay+ xnohat: Bộ SQL injection chỉ xảy ra trên $_GET thôi hay sao mà thấy các bạn chỉ validate trên $_SERVER['QUERY_STRING'] smilie  


Hình như bạn chưa đọc kỹ, tôi có nêu rõ phương thức của nó là kiểm tra dữ liệu đầu vào, đây là chỉ một trong những cách để phòng chống SQL injection đơn giản thôi chứ không phải toàn diện.

Cảm ơn ý kiến đóng góp của bạn.
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 04:03:18 (+0700) | #6 | 120502
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa&quot;&gt;
Offline
[Profile] [PM] [ICQ]
@ hàng sách tay: Đồng chí mới là chưa đọc kỹ, kiểm tra dữ liệu đầu vào mà chỉ kiểm tra trên GET là thua rồi .. smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 04:06:31 (+0700) | #7 | 120503
hangsachtay
Member

[Minus]    0    [Plus]
Joined: 02/01/2007 19:43:51
Messages: 69
Offline
[Profile] [PM]

gamma95 wrote:
@ hàng sách tay: Đồng chí mới là chưa đọc kỹ, kiểm tra dữ liệu đầu vào mà chỉ kiểm tra trên GET là thua rồi .. smilie 


smilie Bạn có cao kiến nào thì xin chỉ giáo thêm !!!

Thanks
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 04:28:24 (+0700) | #8 | 120505
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa&quot;&gt;
Offline
[Profile] [PM] [ICQ]
chả có cao kiến gì, chỉ thấy nó sơ sài nên góp ý ! smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 05:30:02 (+0700) | #9 | 120517
subnetwork
Member

[Minus]    0    [Plus]
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
[Profile] [PM] [WWW] [Yahoo!]
Ở đây bro dùng $_SERVER nghe giang hồ đồn đại, nó được thiết lập dành cho các máy chủ web bao gồm các biến như DOCUMENT_ROOT, SERVER_NAME, SERVER_PORT,...Cái này có liên hệ mật thiết với php.ini cho nên nếu muốn xem thông tin chi tiết thì thãy phpinfo() lên là nhìn thấy nó ngay hoặc nếu có tài khoản root trên con server đó thì điều chỉnh trong php.ini cho nó lẹ . smilie
Quản lý máy chủ, cài đặt, tư vấn, thiết kế, bảo mật hệ thống máy chủ dùng *nix
http://chamsocmaychu.com
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 05:38:01 (+0700) | #10 | 120519
[Avatar]
ThíchHắcKinh
Member

[Minus]    0    [Plus]
Joined: 05/11/2007 21:56:23
Messages: 85
Location: Thiếu Lâm Tự
Offline
[Profile] [PM]

gamma95 wrote:
chả có cao kiến gì, chỉ thấy nó sơ sài nên góp ý ! smilie 

Thế nào mới gọi là cao kiến vậy chị Gammar95 smilie
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 06:17:12 (+0700) | #11 | 120528
[Avatar]
canh_nguyen
Elite Member

[Minus]    0    [Plus]
Joined: 23/08/2004 18:55:09
Messages: 775
Location: Broken dream
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]

hangsachtay wrote:

Hình như bạn chưa đọc kỹ, tôi có nêu rõ phương thức của nó là kiểm tra dữ liệu đầu vào, đây là chỉ một trong những cách để phòng chống SQL injection đơn giản thôi chứ không phải toàn diện.

Cảm ơn ý kiến đóng góp của bạn. 


Ở đây mới chỉ kiểm tra được dữ liệu bằng $_SERVER['QUERY_STRING'] tức là chỉ kiểm tra được dữ liệu truyền trên url . Vậy trường hợp dữ liệu được đưa vào là POST thì cái trên vô hiệu . Ý bác gamma là vậy phải không? smilie
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 10:10:34 (+0700) | #12 | 120544
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]

gamma95 wrote:
@hàng sách tay+ xnohat: Bộ SQL injection chỉ xảy ra trên $_GET thôi hay sao mà thấy các bạn chỉ validate trên $_SERVER['QUERY_STRING'] smilie  


Thì cậu ấy mới bắt đầu trên cái Query Strings thì chúng ta cứ bàn trên cái đó đã vì mới đó ta đã thấy cái sơ sót của phương pháp này, nó quả thật là "hiệu quả đơn giản".
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 12:25:42 (+0700) | #13 | 120565
[Avatar]
ThíchHắcKinh
Member

[Minus]    0    [Plus]
Joined: 05/11/2007 21:56:23
Messages: 85
Location: Thiếu Lâm Tự
Offline
[Profile] [PM]
Các bác cứ làm khó người ta hoài... Get hay Pót gì không cần biết .. miễn là khi truy vấn vào database thì nó sẽ có câu truy vấn ... và câu truy vấn này qua cái bộ lọc ở trên.. Lọc ngay các "từ khóa" có tính chất nhạy cảm ..Thế thôi .. Quá đơn giản và hiệu quả ..Vậy mà các bác cứ đè nhau ra mà cãi smilie
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 22/03/2008 13:20:17 (+0700) | #14 | 120579
ngonchan
Elite Member

[Minus]    0    [Plus]
Joined: 23/02/2004 12:03:51
Messages: 136
Offline
[Profile] [PM] [WWW] [Yahoo!]

ThíchHắcKinh wrote:
Các bác cứ làm khó người ta hoài... Get hay Pót gì không cần biết .. miễn là khi truy vấn vào database thì nó sẽ có câu truy vấn ... và câu truy vấn này qua cái bộ lọc ở trên.. Lọc ngay các "từ khóa" có tính chất nhạy cảm ..Thế thôi .. Quá đơn giản và hiệu quả ..Vậy mà các bác cứ đè nhau ra mà cãi smilie 

không phải là cãi, mà nói để góp ý mà phát triển mừ. g95 nói vậy không lẽ chủ topic không rút ra được cái gì hay sao nà? smilie
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 09/05/2009 23:28:46 (+0700) | #15 | 180069
[Avatar]
nguago
Member

[Minus]    0    [Plus]
Joined: 19/08/2006 12:04:16
Messages: 43
Location: 127.0.0.1
Offline
[Profile] [PM] [WWW] [Yahoo!]
Xin hỏi nếu hacker nhập chữ hoa thì sao ? Làm sao để cấm cả chữ hoa mà ko phải nhập cả chữ hoa vào danh sách?
E thấy cái code này khá hữu hiệu, e cứ đưa cái profix của các trường trong data vào danh sách cấm là yên tâm smilie
HVA No 1 !
http://let.vn
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 10/05/2009 07:54:11 (+0700) | #16 | 180105
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa&quot;&gt;
Offline
[Profile] [PM] [ICQ]
Mấy giờ rồi còn SQL injection ???
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 10/05/2009 09:47:40 (+0700) | #17 | 180115
nhoccon.dakmil
Member

[Minus]    0    [Plus]
Joined: 24/07/2008 11:32:25
Messages: 2
Offline
[Profile] [PM]
Cái này đúng là không toàn diện vì bypass dc hết mà
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 01/07/2009 09:33:51 (+0700) | #18 | 185093
summerlant
Member

[Minus]    0    [Plus]
Joined: 06/11/2004 21:26:36
Messages: 9
Offline
[Profile] [PM]

nhoccon.dakmil wrote:
Cái này đúng là không toàn diện vì bypass dc hết mà  

Bạn có thể vui lòng nói rõ hơn về cách bypass cái bộ lọc này được không?
Cảm ơn trước!
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 01/07/2009 10:17:44 (+0700) | #19 | 185097
thanhsara
Member

[Minus]    0    [Plus]
Joined: 10/04/2007 23:14:38
Messages: 5
Offline
[Profile] [PM]
cái này là chỉ dùng đơn giản thôi, pro nào có cao kiến hơn thì tiếp tục nhé
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 01/07/2009 13:20:27 (+0700) | #20 | 185105
[Avatar]
phanthecong
Member

[Minus]    0    [Plus]
Joined: 19/11/2008 20:02:46
Messages: 12
Location: Đồng Nai
Offline
[Profile] [PM] [WWW] [Yahoo!]
làm chi mà nhiều thế! chỉ cần kiểm tra biến text hay interger, long, datetime là ok
dài dòng
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 04/07/2009 19:26:52 (+0700) | #21 | 185354
olalavui
Member

[Minus]    0    [Plus]
Joined: 03/07/2009 23:08:29
Messages: 4
Offline
[Profile] [PM]
Để test trước đã.

Thank anh đã chia sẻ
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 15/07/2009 04:21:49 (+0700) | #22 | 186285
[Avatar]
xichjum
Member

[Minus]    0    [Plus]
Joined: 14/07/2009 11:02:58
Messages: 9
Offline
[Profile] [PM] [Yahoo!]
mình sợ file đó chi đánh lừa được thôi nhà ảo thuật vẫn là hacker mà! smilie
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 17/07/2009 08:25:29 (+0700) | #23 | 186549
lyhuuloi
Elite Member

[Minus]    0    [Plus]
Joined: 04/04/2003 11:29:17
Messages: 90
Location: TP HCM
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!]
Hề hề Query Strings được truyền tới server đôi khi cần các từ trên thì sao bạn smilie vd:username của tui tui đặt là UNION TEAM hay admin_chinh admin_phu thì bạn lock hết sao ? nhất là khi query string chứa một bài post cho một bài viết trên forum chẳng hạn thì đôi khi đầy các từ trên ( HVA thì khỏi nói, liên tục hén smilie )
Cho xin ý kiến nhe bạn.
Thân, 

Mình đọc từ trên xuống dưới thì rõ ràng thấy nhận định của xnohat là hợp lý, vì nếu chặn tất tần tật một cách vô thức như vậy thì cái này thì không phải là cách tối ưu trong hầu hết trường hợp.

Đó và việc bảo mật của webmaster, các webmaster thường không có user đăng ký các tên nhạy cảm như vậy.

Bạn hãy thử dùng công cụ search trên HVA để tìm từ khóa "UNION" xem có được phép không ?

Để có được sự bảo mật đôi khi người ta sẽ gặp phải những hạn chế đi kèm, không có một công cụ bảo mật nào được gọi là hoàn hảo cả, cái gì cũng có 2 mặt của nó bạn à

Cảm ơn bạn vì những ý kiến đóng góp ! 

Đó là chính sách bảo mật ở một số website, như HVA thường xuyên gánh chịu lượng request thì đó là một yêu cầu tối thiểu để chặn việc phá hoại smilie Nói như bạn có nghĩa là mình không thể dùng Tool của bạn để áp dụng cho một website nói về Hacking à ? Vì khi làm một website nói về Hacking thì mình lại phải gõ đi gõ lại khá nhiều từ mà bạn đã chặn đấy smilie kaka

Về cơ bản, trong PHP, khi dùng $_REQUEST là nó-đã-bao-gồm-$_GET-và-$_POST, do đó nếu hangxachtay chặn từ $_REQUEST là khá ổn về mặt xử lý dữ liệu đầu vào, chứ dùng mỗi $_GET thì không ăn thua, nếu không muốn nói là quá AMATEUR !


http://lyhuuloi.com smilie
[Up] [Print Copy]
  [Question]   Re: Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 24/07/2009 21:25:40 (+0700) | #24 | 187409
[Avatar]
talama3000
Member

[Minus]    0    [Plus]
Joined: 07/05/2008 23:31:08
Messages: 29
Offline
[Profile] [PM]

gamma95 wrote:
Mấy giờ rồi còn SQL injection ??? 

thế mấy giờ mới hết sql hả anh ?
nó không bao giờ là hết giờ cả smilie rất nhiều site nổi tiếng vẫn bị dính sql đó ?
Blog == http://talama.vn
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 07/01/2011 15:55:52 (+0700) | #25 | 228945
luandoson
Member

[Minus]    0    [Plus]
Joined: 30/06/2009 12:05:12
Messages: 3
Offline
[Profile] [PM]
Tiện đây cho mình hỏi , như các bạn đã đề cập tới $_SERVER['QUERY_STRING'] quản lý biến GET vậy hàm nào sẽ quản lý biến POST trên server?.
Tự tin mà sống
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 06/05/2012 07:26:19 (+0700) | #26 | 262539
[Avatar]
chiro8x
Member

[Minus]    0    [Plus]
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
[Profile] [PM] [Yahoo!]
Cái giả pháp bạn đưa ra đơn giản thì thấy rồi, nhưng hiệu quả thì không. Có 3 đường có thể tiến hành SQL injection như sau (theo ngu ý của tớ, còn mấy héch cơ biết thêm tớ cũng chịu).

GET
POST
COOKIE

Với GET method bạn có thể xử lí theo cái ở trên vì nó được truyền giá trị vào $_SERVER['QUERY_STRING'];. Cách làm này của bạn sẽ chặn các truy vấn chứa từ bạn không mong muốn, và những truy vấn hợp lệ nếu chứa từ không mong muốn.

Với POST method bạn không làm gì ngoài việc đứng nhìn, và cho dù người dùng có POST nội dung.

Code:
union select 1 from information_schema.tables--


Với việc người dùng sử dụng chỉnh sửa COOKIE để tiến hành SQL injection.

Với phương án bạn đưa ra không hiệu quả và khả thi như mong đợi.

thichhachkinh wrote:

Các bác cứ làm khó người ta hoài... Get hay Pót gì không cần biết .. miễn là khi truy vấn vào database thì nó sẽ có câu truy vấn ... và câu truy vấn này qua cái bộ lọc ở trên.. Lọc ngay các "từ khóa" có tính chất nhạy cảm ..Thế thôi .. Quá đơn giản và hiệu quả ..Vậy mà các bác cứ đè nhau ra mà cãi
 

Đọc cái source PHP còn không hiểu mô tê gì thế mà gió lữa vẫn ầm ầm thế này.

nguago wrote:

Xin hỏi nếu hacker nhập chữ hoa thì sao ? Làm sao để cấm cả chữ hoa mà ko phải nhập cả chữ hoa vào danh sách?
E thấy cái code này khá hữu hiệu, e cứ đưa cái profix của các trường trong data vào danh sách cấm là yên tâm
 

SQL sử dụng chử hoa bao giờ, Trung Cheng chiếm được Washington rồi à.

gamma95 wrote:

Mấy giờ rồi còn SQL injection ???
 

Bồ giỏi thì giải thích cho người không biết hiểu, chứ nói trống không thế tạo cơ hội cho mấy bạn trẻ trâu cãi chày cãi cối thôi.

P/S: em không có ý đào mộ đâu, hôm nay viết lại cái framework vào đọc lại mấy bài liên quan thấy bức xúc.
while(1){}
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 06/05/2012 09:18:05 (+0700) | #27 | 262542
acenux
Member

[Minus]    0    [Plus]
Joined: 26/02/2012 19:52:32
Messages: 12
Offline
[Profile] [PM]

chiro8x wrote:

nguago wrote:

Xin hỏi nếu hacker nhập chữ hoa thì sao ? Làm sao để cấm cả chữ hoa mà ko phải nhập cả chữ hoa vào danh sách?
E thấy cái code này khá hữu hiệu, e cứ đưa cái profix của các trường trong data vào danh sách cấm là yên tâm
 

SQL sử dụng chử hoa bao giờ, Trung Cheng chiếm được Washington rồi à.
 


Ý của nguago là chữ in hoa chứ không phải chữ Hoa (Trung Quốc). Với cách phòng chống của chủ topic thì chỉ với chữ viết thường còn in hoa thì phải bổ sung thêm, ngoài ra nếu attacker dùng vừa hoa vừa thường nữa thì càng rắc rối hơn , vd : /**/uniOn/**/sELeCt

Bài viết cũng đã khà cũ rồi, hiện tại thì cách phòng chống SQL Injection khi dùng PHP và MySQL còn có mysql_real_escape_string, addslashes để lọc câu truy vấn.
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 06/05/2012 09:24:49 (+0700) | #28 | 262545
[Avatar]
chiro8x
Member

[Minus]    0    [Plus]
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
[Profile] [PM] [Yahoo!]
strtolower(); để làm gì ? chẳng biết rối hơn chổ nào nữa.
while(1){}
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 06/05/2012 09:51:55 (+0700) | #29 | 262550
acenux
Member

[Minus]    0    [Plus]
Joined: 26/02/2012 19:52:32
Messages: 12
Offline
[Profile] [PM]
Uhm, đúng là quên mất vụ strtolower(), vậy giờ hoa thường đều lọc được rồi smilie
[Up] [Print Copy]
  [Question]   Phòng chống SQL Injection bằng PHP, hiệu quả đơn giản 07/05/2012 13:52:48 (+0700) | #30 | 262647
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]
Nhìn vào "blacklist" này dễ thấy ngay 1 cách bypass để chèn các truy vấn sql. Xin hỏi anh em nào nhìn thấy không ?
-- w~ --
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|