Session, mày sống được bao lâu?
Chào các mẹ
Như bữa trước đã nói trong bài “hack” hệ thống captcha của truờng, ta có thể bypass được việc nhập captcha do lỗi của nguời lập trình liên quan đến Session.
Mình cũng đã viết một con bot nhỏ nhỏ để lấy data thời khoá biểu về. Mọi việc diễn ra khá trơn tru mà không cần đến dầu nhớt, tuy nhiên, sau khi ngủ một giấc, chạy lại thì con bot méo get được data. WTF??? Chả lẽ hôm qua chạy đuợc mà hôm nay không chạy được ah.
Ah, vậy đơn giản
Em thử rồi, không đuợc đâu các bác ạ
Sau một hồi mày mò StackOverFlow thì em cũng biết được nguyên nhân của vấn đề đó là Thời gian sống của session.
Nghĩa là sao? Nghĩa là data mà thằng Session lưu cho từng user sẽ chỉ tồn tại trong một khoảng thời gian và sau đó sẽ bị bác gom phế liệu (garbage collection) thu dọn đi bán ve chai. Tuỳ vào từng ngôn ngữ khác nhau mà Session sẽ có khoảng thời gian sống mặc định khác nhau. Như trường mình dùng PHP thì mình nghĩ chắc để mặc định là 24 phút, cũng chả có nhiều thằng quan tâm đến cái này mấy đâu.
1
2
3
4
5
|
; After this number of seconds , stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process .
session . gc_maxlifetime = 1440
|
Các bác có thể thay thế giá trị ấy trong file php.ini
để Session của mình có thể sống thọ hơn đuợc một tí.
Thử nghiệm
Tuy nhiên đấy chưa phải là tất cả? Mình có thử một đoạn test Session như sau
File setSession.php
1
2
3
4
5
6
7
8
|
<?php
session_start ( ) ;
$t = time ( ) ;
$_SESSION [ 'cuthanh' ] = $t ;
echo "Session cuthanh set with value: " . $t ;
?>
|
File getSession.php
1
2
3
4
5
6
7
8
9
10
|
<?php
session_start ( ) ;
if ( isset ( $_SESSION [ 'cuthanh' ] ) ) {
echo "We got session cuthanh contains value :" . $_SESSION [ 'cuthanh' ] . " at " . time ( ) ;
} else {
echo "Sorry, all sessions gone!" ;
}
?>
|
Khá đơn giản nên em không giải thích gì thêm nha. Okey bây giờ test thử nhé
- Chạy thử file
setSession.php
- Chạy file
getSession.php
để xem đã nhận Session chưa - Okey, bây giờ ra Find Match trận Dota hoặc làm tập JAV ngắn ngắn (nói chung làm sao trên 24 phút là được)
- …
- Bây giờ load thử lại
getSession.php
xem sao nhé.
Theo các bác thì kết quả ra sao? “Sorry, all sessions gone!” hả? Nếu đúng như vậy thì các bác đi mua vé số, lô đề, chơi Dota thì pick PA hoặc OM đi nhé. Tại vì chỉ có 1% cơ hội các bác ra đuợc kết quá như vậy thôi
Ủa, sao nãy bảo thời gian sống của nó được có 24 phút thôi mà. Nếu các bác đọc kĩ trong chỗ setting php.ini
mà mình nói hồi nãy sẽ có dòng
1
2
3
|
After this number of seconds , stored data will be seen as 'garbage' and cleaned up by garbage collection proccess
|
Nghĩa là, sau chừng ấy thời gian, Session sẽ được coi như là phế liệu và sẽ bác thu gom phế liệu dọn dẹp.
php.ini
có đề cập đến vấn đề này như sau
1
2
3
4
5
6
7
8
9
10
|
; Define the probability that the 'garbage collection' process is started
; on every session initialization .
; The probability is calculated by using gc_probability / gc_divisor ,
; e . g . 1 / 100 means there is a 1 % chance that the GC process starts
; on each request .
session . gc_probability = 1
session . gc_divisor = 100
|
Đây chính là lý do mà, sau khi xem tập JAV vào lại
getSession.php
chỉ có 1% cơ hội là Session sẽ chết, còn lại 99% là nó vẫn còn sống. Vì vậy nếu các bác muốn bác phế liệu chăm chỉ thu gom, không đi quẩy bar bủng các kiểu nữa thì chỉ cần chỉnh lại 2 thông số trên.
Ngoài ra thì các bác có thể lưu Session ở một folder riêng không cho bác ve chai nhìn ngó tới. Cách này cũng khá đơn giản, lại không phải chỉnh lại php.ini
nên các bác tự search Google hay StackOverFlow đi nha
Tại sao hôm nay mình lại nói đến vấn đề này?
Tại vì khi code con bot lấy giữ liệu thời khoá biểu của truờng mình thì vấp phải vấn đề thời gian sống của Session khiến cho con bot của mình hôm qua chạy mà hôm nay nó nghỉ. Cho dù mình có chỉnh lại System Time nhưng nó vẫn đình công.
Và với lượng truy cập của hơn 5k sinh viên bách khoa thì 1% cũng khiến cho Session không thế sống quá thọ đuợc
Quả hình để cho các bác khỏi nói em chém gió
Làm sao để vuợt qua được
Thì nó chết thì kiếm con khác thôi. Ez, huh? Nghĩa là nếu Session cũ của mình chết, mình sẽ xin lại con session mới. Nếu làm như vậy thì cứ sau 24 phút thì mình lại phải “mồi” lại captcha một lần. Mà captcha lại phải nguời nhập, cũng chả khá hơn bao nhiêu nhỉ?
Theo các bạn, hướng đi nào để mình có thể tiếp tục viết app xem thời khoá biểu đây? Comment bên duới nhé.
Mình đã có cách riêng của mình rồi những chưa chắc là tốt ưu nhất, có gì mình sẽ chia sẻ ở bài viết sau nhé. Thân ái!
- Quyền năng mới thuộc về chiếc điện thoại thông minh và máy tính bảng
- BlackBerry có thể vứt bỏ hoàn toàn hệ điều hành của B10
- IPTV Một số thuật ngữ liên quan tới dịch vụ truyền hình qua internet
- Tài liệu và mã nguồn hệ thống groupon, bán deal, mua hàng theo nhóm
- Sử dụng offline Google maps trên iphone, ipad và các thiết bị Android
- Vì sao một số người lại không thể thành công?
- Làm sao để làm việc ban ngày cũng hiệu quả như ban đêm?
- 5 ứng dụng gửi thiệp chúc mừng trong iPhone
- Uber triển khai dịch vụ chăm sóc sức khỏe lưu động
- Bạn biết gì về điện thoại?
- Quick tip: thêm hoặc xóa bỏ class CSS bằng Vanilla JavaScript
- Fix lỗi "Could not open database connection" của kloxo
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>