|
|
quanlytruong wrote:
Không rõ đây là lỗi gì nhưng cho đến lúc này chưa tái tạo được lỗi như thế. Có thể hieuhoc va thang2rs dùng chung một proxy server và proxy server này xử lý session thế nào không ổn hoặc proxy server cả 2 người đang dùng đã cache 1 trang của HVA trước đây khi hieuhoc dùng rồi dùng lại cho thang2rs. Nếu bồ chưa đăng nhập mà nó lại hiển thị trang đã login của hieuhoc thì cái proxy hơi bị chuối vì các trang của diễn đàn HVA hoàn toàn động. Mỗi user session hoàn toàn độc lập và các trang động được tạo ra đều gởi tín hiệu cho proxy server / browser rằng "không nên cache trang này".
Thân mến.
Tôi cũng không rõ nhưng tôi chưa bao giờ dùng proxy. Như thế vẫn có thể dùng chung 1 proxy server với 1 ai đó?
Sau lần đầu tiên gặp Đăng xuất[hieuhoc] khoảng 1 giờ thì tôi 1 lần nữa gặp lại cụm từ này. Từ đó đến nay thì ổn )
|
|
|
Vào HVA (chưa đăng nhập) thấy cái này:
Đăng xuất[hieuhoc]
Rất tiếc là không thể post hình được.
Tôi là thang2rs, không phải hieuhoc! Security or cache problem?
|
|
|
Giải pháp dựa trên greylisting của mrro đã "chết" ngay từ khi đang còn là ý tưởng. Vậy còn lại là cái gì? Bayesian filtering? Không, một chữ bayesian không đủ để gọi là ý tưởng (càng không thể xem là 1 giải pháp).
Như vậy các bạn đang tranh cãi về cái gì? Không phải là 1 giải pháp mà ngay cả ý tưởng của nó cũng chưa rõ hình hài chứ?
Tôi không thấy Edison, Bruce hay Ranum có liên quan gì ở đây. Hãy để những ông ấy yên. Không có những ông ấy thì việc phải có (theo mrro) hay không cần (the nbthanh) 1 giải pháp cho vấn đề SPIM cũng không có gì thay đổi.
nbthanh wrote:
Phải đợi có product ra sao đã
Đúng vậy, 1 ý tưởng cần đáp xuống mặt đất để mọi người xem cái hình thù nó như thế nào.
To mrro: Cả 1 ý tưởng dựa trên greylisting bị phá sản chỉ vì 1 cái AutoIt API? Khó hiểu! Bạn đang làm tôi nghi ngờ về 1 giải pháp trọn vẹn cho vấn nạn SPIM tiếp theo của bạn đấy.
Xin đừng nghĩ tôi đang tranh luận với các bạn (mặc dù tôi rất muốn được như vậy) mà hãy xem tôi như 1 nạn nhân tội nghiệp của vấn nạn SPIM đang trông chờ 1 giải pháp thực sự từ các bạn )
|
|
|
VN wrote:
Hi all !
Tôi có thư viện hình ảnh (jpg, gif ...) , và đại đa số điều nhiễm virus (Tôi đang dùng windows XP). Tôi đã dùng các chương trình quét như Kaspersky, Macfee, NAV và cũng đã phải thử đến BKAV để tìm vận may nhưng ko được, hầu hết đều phát hiện ra virus nhưng ko tách nó ra mà xoá hẳn file ảnh đó. Vậy có cách nào chỉ diệt virus mà vẫn giữ các file ảnh ko ? Vì đó là các hình ảnh quan trọng của cơ quan tôi.
Xin cảm ơn
Bạn định tách file để lấy ảnh hay lấy virus?
Nếu để lấy ảnh bạn đã thử mở file bằng ACDsee rồi "save as" thành file dưới 1 định dạng khác chưa?
|
|
|
Siêu trộm wrote:
Thật ra cái ví dụ của bạn, phần xử lý đâu có gì là phức tạp, nếu dùng JS thì cũng có thể check được mà, ví dụ đó wá cụ thể, ko thể dùng đc.
Đúng vậy, ví dụ tôi đưa ra quá cụ thể, nó hầu như chỉ giải quyết được 1 số rất ít các trường hợp đặc biệt nào đó mà thôi. Ví dụ này chỉ để minh hoạ cho việc "truyền" biến giữa PHP và JS nhằm giải quyết vấn đề mà bạn đưa ra, đó là giao việc xử lí các tính toán phức tạp cho PHP, JS làm nốt phần việc còn lại và tất cả đều diễn ra ở phía client. Việc tính các số lẻ nhỏ hơn 100 cũng chỉ là ví dụ cho việc xử lí bằng PHP mà thôi. Tôi cũng đã giả định đây là các tính toán phức tạp cần được xử lí bằng PHP rồi mà, không hiểu sao bạn lại cho rằng "nếu dùng JS thì cũng có thể check được" ) .
Rõ ràng cách làm mà tôi đưa ra "gò" người lập trình vào 1 cái "khuôn" nhất định và ta không thể làm gì nhiều với nó. Tuy nhiên trong thực tế lập trình web thỉnh thoảng ta lại gặp tình huống mà cách làm này lại tỏ ra đặc biệt hữu dụng.
AJAX lại là chuyện hoàn toàn khác. Ứng dụng của nó rất rộng và người ta mơ đến 1 ngày nào đó các ứng dụng web với sự hỗ trợ của AJAX sẽ thay thế các... desktop applications. Harvestmoon cũng đã có bài viết rất sinh động về AJAX, tôi nghĩ bạn có thể mở 1 topic mới về cái này.
|
|
|
Siêu trộm wrote:
Truyền ngược lại thì dễ rồi, nhưng cái tui cần là cái hàm check viết bằng PHP vì JS wá yếu ko thể check đc, hoặc nếu được thì dài dòng (viết lại hàm của PHP). Nếu ko thể thì chắc đành phải wa 1 bước nữa vậy, POST đến $PHP_SELF rồi check.
Rất tiếc phần cốt lõi của vấn đề (giao các tính toán phức tạp cho PHP) đã được giải quyết nhưng bạn lại không đồng ý )
|
|
|
Siêu trộm wrote:
Vấn đề là khi dùng 1 form có nút submit khi click vào sẽ chạy 1 function JS, nhưng thực chất function này tui lại dùng PHP để code, vậy thì làm sao có thể lấy giá trị của các biến mà mình truyền vào function này :?) .
Code example:
Code:
<script language="JavaScript">
function f1(x1, x2) {
<?php
$x1 = .... ; //bí chỗ này, làm sao lôi cái giá trị x1 ở trên ra
?>
}
</script>
Đừng có biểu tui là xử lý bằng JS lun nhe, vì JS ko đủ sức làm nên tui mới phải viết bằng PHP, có pác nào rành JS thì giúp tui phát, cám ơn nhiều nhiều.
Như nhiều người đã đề cập, tôi nghĩ điều này là không thể. Tuy nhiên bạn có thể làm ngược lại: PHP sẽ "truyền" biến cho JS.
Để đơn giản ta lấy ví dụ sau:
Kiểm tra giá trị nhập của người dùng, nếu giá trị này là 1 số lẻ và nhỏ hơn 100 thì hợp lệ, cho phép submit, không thì alert() một chuỗi nào đó và buộc người dùng phải nhập lại.
Các bước thực hiện như sau:
1. Xây dựng 1 array gồm các giá trị hợp lệ bằng PHP. Giả sử việc này hết sức phức tạp và bạn muốn được xử lí bằng PHP.
2. Xuất array này dưới dạng JS array.
3. Kiểm tra tính hợp lệ của giá trị nhập với JS array này.
Code:
<?php
// Build array of valid values
//
$validVals=array();
for ($i=0;$i<100;$i++) {
if ($i%2) {
$validVals[]=$i;
}
}
?>
<script type="text/javascript">
<?php
// Output a Javascript array
//
$validStr='';
foreach ($validVals as $val) {
if (!$validStr) {
$validStr="$val";
} else {
$validStr.=",$val";
}
}
echo "var validVals=new Array(".$validStr.")";
?>
function validate (x)
{
for (i in validVals) {
if (validVals[i]==x)
return true;
}
alert("Invalid input!");
return false;
}
</script>
<form method="post" action="index.php" onsubmit="return validate(this.x.value)">
<input type="text" name="x" />
<input type="submit" />
</form>
Tất nhiên cách làm trên không hoàn hảo nhưng bạn có thể giải quyết 1 số trường hợp theo "hướng" này.
Dân lập trình "hệ thống" có thể "sặc cười" với những trò này nhưng đây lại là 1 trong những đặc điểm của lập trình web. Một khi đã chấp nhận lập trình web là ta đã chấp nhận những thứ "vụn về" (chữ của conmale) như thế.
|
|
|
congvv99 wrote:
Để đơn gian che mắt xếp để mua máy mới thì cái thang NAV2006 vào ! .. cho nó Starup cung windown .. thế là okie !!
Một cách "quảng cáo" độc đáo cho NAV! NAV2006 thì tôi chưa sài nhưng NAV2004 thì quả đúng như vậy. Tôi "ấn tượng" nó đến độ không muốn thấy bất cứ chương trình nào của Symantec chạy trên máy của mình.
To gambino:
Tôi nghĩ bạn có thể viết 1 chương trình nhỏ cho chạy thường trực trên máy của mình. Một số hãng máy tính lớn bán mainframe cho khách hàng cũng làm cách này. Tuỳ theo số tiền mà khách hàng chịu trà người ta sẽ cho cái chương trình này chạy "nhiều" hay "ít".
|
|
|
conmale wrote:
Về cách "mã hoá" shadow thì tổng thể như sau. Khi user được cung cấp một pasword hoặc anh ta chọn một password, password này được encode với giá trị ngẫu nhiên để tạo ra salt. Giá trị salt này sẽ được lưu cùng với password đã được encoded trên hệ thống.
Hình như có sự nhầm lẫn ở đây: "password này được encode với giá trị ngẫu nhiên để tạo ra salt". Salt chính là giá trị ngẫu nhiên này!!!
|
|
|
babyyou wrote:
theo mình hiểu vấn đề không phải là Gateway, mình sẽ cố gắng giải thích chi tiết hơn.
Mình có 1 server chạy phần mềm ứng dụng yêu cầu là các văn phòng chi nhánh ở xa phải dùng phần mềm này. Mình đăng ký tên miền miễn phí tencongty.dyndns.org và thiết lập VPN server cho một server trong mạng và mở cổng 1723 trên modem adsl trỏ về địa chỉ server này để chi nhánh có thể kết nối VPN về trụ sở chính. Tuy nhiên do modem dùng cho cả việc sử dụng internet nên kết nối VPN để chạy ứng dụng rất chậm nên mình muốn đăng ký thêm một đường internet nữa chỉ để cho các chi nhánh kết nối VPN về trụ sở chính. Vấn đề là đường adsl mới sẽ có lớp địa chỉ khác địa chỉ hiện tại, nếu muốn VPN server dùng đường mới mình phải đổi IP để chạy theo lớp IP của modem mới mà như vậy thì khi kết nối VPN sẽ không truy cập được vào lớp mạng cũ có server ứng dụng.
Mong mọi người giúp đỡ
Tôi nghĩ likecracksoft đã có câu trả lời cho bạn.
Để đơn giản bạn cứ dùng ADSL đang có cho việc truy cập server từ các chi nhánh. Các máy trong công ty sẽ truy cập internet qua ADSL mới bằng cách chọn ADSL mới này làm gateway. Tất cả các máy trong công ty, kể cả 2 ADSL router (cũ và mới) đều cùng 1 lớp mạng.
Hy vọng là tôi hiểu đúng ý bạn.
|
|
|
luthanh wrote:
Các bạn cho minh hỏi
Ví dụ như trong một công ty có 7 máy tính cùng dùng chung thiết bị mạng để kết nối Inernet , và mình muốn chỉ 5 máy tính kết nối được với nhau để chia sẽ thông tin dữ liệu (LAN). Còn 2 máy kia thì kô kết nối được với máy nào cả (kô kết nối mạng LAN) Nhưng Vẫn kết nối được INTERNET
chú ý: Cùng dung chung các thiết bị mạng
Mong các bạn giúp đỡ
Mình xin cảm ơn
Cảm ơn các bạn !
Cho mình hỏi một vấn đề nữa là mình muốn 5 máy này cùng kết nối Được với nhau để chia sẽ thông tin dữ liệu ( LAN 1) , và 2 máy còn lại cũng kết nối được với nhau (LAN 2) Nhưng 2 máy này kô kết nối được với 5 máy kia và ngược lại (LAN 1 # LAN 2)
chú ý: Cùng dùng chung các thiết bị mạng
Mong các bạn giúp đở
Mình xin cảm ơn
Bạn thử cách này xem:
LAN 1: mask: 255.255.255.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
LAN 2: mask: 255.255.255.0
192.168.1.1
192.168.1.2
ADSL Router: 192.168.1.3, mask: 255.255.255.0
Các máy trong LAN 2 chọn 192.168.1.3 (ADSL Router) làm gateway.
|
|
|
LM wrote:
oách, Trời
Code:
Trên một system hệ *nix (rất nhiều các server thuộc dạng này) tất cả các kí tự trừ '/' và '\0' đều được phép dùng cho việc đặt tên file. Khi đó vấn đề sẽ nảy sinh. Ta sẽ dùng kí tự nào cho việc "tách" file và link đây. '\0' sẽ lập tức "cắt" chuỗi ngay tại vị trí của nó (nếu như PHP xử sự như C/C++, cái này tôi chưa thử với PHP, có thể tôi sai nhưng dùng '\0' chẳng hay tí nào). Còn '/' thì chắc chắn là có trong "http://..." rồi (có thể LM bảo "lấy" '/' đầu tiên, nhưng như vậy cũng chẳng có gì "sáng sủa" cả).
Bó tay.chấm com, bạn thang2rs không hiểu ý mình rồi.
Xin nhắc lại một lần nữa ĐÓ LÀ VÍ DỤ. Bản thân LM cũng làm trên *nix nhiều nên cũng hiểu quy tắc đặt tên file, đừng nói bạn hiểu
Ở đây "Bàihatx.mp3-http://linkx" là một chuỗi, công việc của coder là xây dựng chuỗi sao cho hợp lý và dùng ký tự gì để làm mảng giả .
Bàihat1.mp3-http://link1, nghĩa là sẽ đặt file MP3 có tên là Bàihat.mp3:
- TH1: Bạn nghĩ đặt tên file Unicode Bàihatx.mp3 mà LM đưa ra, thì xin thưa LM chỉ muốn newbie hiểu cái chuỗi Bàihat1.mp3 là tên của file, còn ghi TV có dấu để newbie dễ hiểu.
- TH2: Bạn nhìn cái giá trị Bàihat1.mp3-http://link1 rồi phát biểu như trên là bó tay.com tập 2. Vì sao? Vì đặt giá trị trong PHP ... như thế là ok rồi )
Lại hiểu nhầm ý tập 3
Còn '/' thì chắc chắn là có trong "http://..." rồi (có thể LM bảo "lấy" '/' đầu tiên, nhưng như vậy cũng chẳng có gì "sáng sủa" cả).
Lấy cái dấu / đầu tiên làm gì trời, mần gì với nó đây, vế 1 và vế 2 được chia bởi ký tự "-" hoặc những ký tự khác có thể. ???
Tôi hiểu và hiểu rất rõ ý của bạn. Tôi đã viết:
thang2rs wrote:
Trên một system hệ *nix (rất nhiều các server thuộc dạng này) tất cả các kí tự trừ '/' và '\0' đều được phép dùng cho việc đặt tên file. Khi đó vấn đề sẽ nảy sinh. Ta sẽ dùng kí tự nào cho việc "tách" file và link đây. '\0' sẽ lập tức "cắt" chuỗi ngay tại vị trí của nó (nếu như PHP xử sự như C/C++, cái này tôi chưa thử với PHP, có thể tôi sai nhưng dùng '\0' chẳng hay tí nào). Còn '/' thì chắc chắn là có trong "http://..." rồi (có thể LM bảo "lấy" '/' đầu tiên, nhưng như vậy cũng chẳng có gì "sáng sủa" cả).
Tôi đành phải giải thích lại ý của mình vậy mặc dù đã giải thích rất rõ rồi. Trên 1 *nix system ta có thể dùng bất kì kí tự nào, trừ 2 kí tự sau: '/' và '\0', cho việc đặt tên file. Điều này có nghĩa 1 file có thể mang bất kì tên nào miễn là trong tên file ấy không chứa 2 kí tự kể trên. Trong cách dùng "mảng giả" của bạn, điều này cũng có nghĩa ta chỉ có thể dùng 1 trong 2 chuỗi sau để "tách" file và link: "/" hoặc "\0". Và, rất tiếc, như đã phân tích ở trên, việc dùng 1 trong 2 chuỗi này làm separator chẳng có gì là hay ho cả (mặc dù có thể dùng tốt).
Như vậy, trong trường hợp của bạn, không thể dùng bất kì chuỗi hay kí tự nào khác, kể cả "|, || , +, hoặc thậm chí thích [HVA] , |hva|", để làm việc này. Bởi lẽ đơn giản là nếu tên file (và cả link nữa) chứa ít nhất 1 trong các chuỗi hay kí tự kể trên thì bạn sẽ "chia" thế nào đây.
Chẳng hạn, nếu dùng [hva] làm separator:
"baihat1[hva].mp3[hva]http://link1"???.
Chẳng có unicode hay TV có dấu nào ở đây cả (mặc dù lôi nó ra bạn sẽ gặp lôi thôi đấy). Có thể bạn sẽ nói là bạn sẽ "kiểm soát" tên file và link? Tất nhiên bạn có thể làm được điều này nhưng như vậy bạn sẽ có thêm khối việc để làm đấy chứ không "nhanh lẹ" như bạn nói đâu.
Có thể tôi hơi "cầu toàn" (mà như bạn nói là "chính qui") nhưng rõ ràng cái "mảng giả" của bạn là thiếu triệt để. Hơn nữa nó cũng chẳng đơn giản hơn tí nào so với:
Code:
$danhsach["nhac"] = array(
$file1=>$link1,
$file2=>$link2,
$file3=>$link3
);
Với code này bạn có thể hoàn toàn yên tâm với bất kì file hay link nào. Bạn cũng chẳng cần phải tách file và link ra làm gì. Đúng không?
Nhưng thôi, tất cả chỉ là "tiểu tiết", tôi không hứng lắm với những đề tài như thế mà cái gì mới hơn kia.
Đến đây chắc bạn đã biết là ai "hiểu nhầm" và "Bó tay.chấm com" ai rồi chứ? Tất cả cũng tại vì cái mở đầu rất ấn tượng của bạn:
LM wrote:
hmm,
Cuộc đời không như màu hồng, có lúc hồng đẹp có lúc đen sì lì buồn bã. Code cũng vậy thôi, có lúc dùng cách này dùng cách khác hehe.
"Đọc sơ" qua hệ mấy bài, LM không ý kiến gì, chỉ "góp ý" vài cái.
- 114V: dùng hàm rand() trong câu select là thuộc dạng top, vì đa số dùng cách này là rất nhẹ.
Dùng hàm rand() để nó sort ngẫu nhiên.
- canh_nguyen: Code bạn hơi có vấn đề chút, nhưng hoan nghênh bạn cho mọi người, tuy nhiên bạn nên rút kinh nghiệm nếu như đó code bạn viết .
- TO: những người chê canh_nguyen: đâu phải ai cũng good. Nên đọc kỹ 5 điều bác hồ dạy. Trong đó có 1 điều, mà điều đó vào cưộc sống sẽ đụng nhiều. Nhưng cũng hoan nghênh tính thẳng thắng của các bạn.
...
Có những cái nhiều khi phải kết hợp giữa câu truy vấn SQL và code PHP. Không hẵn là tất cả deu Sql hoặc tất cả đều PHP giải quyết .
làm tôi tưởng "mình sắp được thưởng thức 1 món ngon đây". Lỗi tại tôi, lỗi tại tôi, nó chỉ có thế thôi.
Bạn lại tiếp:
LM wrote:
echo "
<OBJECT ID=\"Player\" CLASSID=\"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\" width=340 height=300>
<PARAM name=\"autoStart\" value=\"false\">
<PARAM name=\"DisplaySize\" value=\"True\">
<PARAM name=\"ShowPositionControls\" value=\"True\">
<PARAM name=\"url\" value=\"$file_fl\">
<param name=\"AutoSize\" value=\"-1\">
<param name=\"AutoStart\" value=\"-1\">
<param name=\"AnimationAtStart\" value=\"-1\">
<param name=\"AllowScan\" value=\"-1\">
<param name=\"AllowChangeDisplaySize\" value=\"-1\">
<param name=\"AutoRewind\" value=\"0\">
<param name=\"Balance\" value=\"0\">
<param name=\"BaseURL\" value>
<param name=\"BufferingTime\" value=\"10\">
<param name=\"CaptioningID\" value>
<param name=\"ClickToPlay\" value=\"-1\">
<param name=\"CursorType\" value=\"0\">
<param name=\"CurrentPosition\" value=\"-1\">
<param name=\"CurrentMarker\" value=\"0\">
<param name=\"DefaultFrame\" value>
<param name=\"DisplayBackColor\" value=\"0\">
<param name=\"DisplayForeColor\" value=\"16777215\">
<param name=\"DisplayMode\" value=\"0\">
<param name=\"DisplaySize\" value=\"0\">
<param name=\"Enabled\" value=\"-1\">
<param name=\"EnableContextMenu\" value=\"-1\">
<param name=\"EnablePositionControls\" value=\"-1\">
<param name=\"EnableFullScreenControls\" value=\"0\">
<param name=\"EnableTracker\" value=\"-1\">
<param name=\"Filename\" value>
<param name=\"InvokeURLs\" value=\"-1\">
<param name=\"Language\" value=\"-1\">
<param name=\"Mute\" value=\"0\">
<param name=\"PlayCount\" value=\"0\">
<param name=\"PreviewMode\" value=\"true\">
<param name=\"Rate\" value=\"1\">
<param name=\"SAMILang\" value>
<param name=\"SAMIStyle\" value>
<param name=\"SAMIFileName\" value>
<param name=\"SelectionStart\" value=\"-1\">
<param name=\"SelectionEnd\" value=\"-1\">
<param name=\"SendOpenStateChangeEvents\" value=\"-1\">
<param name=\"SendWarningEvents\" value=\"-1\">
<param name=\"SendErrorEvents\" value=\"-1\">
<param name=\"SendKeyboardEvents\" value=\"0\">
<param name=\"SendMouseClickEvents\" value=\"0\">
<param name=\"SendMouseMoveEvents\" value=\"0\">
<param name=\"SendPlayStateChangeEvents\" value=\"-1\">
<param name=\"ShowCaptioning\" value=\"0\">
<param name=\"ShowControls\" value=\"-1\">
<param name=\"ShowAudioControls\" value=\"-1\">
<param name=\"ShowDisplay\" value=\"0\">
<param name=\"ShowGotoBar\" value=\"0\">
<param name=\"ShowPositionControls\" value=\"-1\">
<param name=\"ShowStatusBar\" value=\"0\">
<param name=\"ShowTracker\" value=\"-1\">
<param name=\"TransparentAtStart\" value=\"0\">
<param name=\"VideoBorderWidth\" value=\"0\">
<param name=\"VideoBorderColor\" value=\"0\">
<param name=\"VideoBorder3D\" value=\"0\">
<param name=\"AutoSize\" value=\"true\">
<PARAM name=\"enableContextMenu\" value=\"False\">
</OBJECT>";
LM wrote:
echo "
<object classid=\"clsid27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\" width='300' height='200'>
<param name=\"movie\" value='$file_fl'>
<param name=\"wmode\" value='transparent'>
<param name=\"quality\" value=\"high\">
<embed src='$file_fl' quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" width='300' height='200></embed></object>
";
LM wrote:
Ở đây muốn điền thêm tên bài hát thì dễ thôi.
<?php
$danhsach["nhac"] = array(
"1" => "nhac1.mp3[hva]http://link1[hva]Anh Mãi yêu em 1",
"2" => "nhac2.mp3[hva]http://link2[hva]Anh Mãi yêu em 2",
"3" => "nhac3.mp3[hva]http://link3[hva]Anh Mãi yêu em 3",
"4" => "nhac4.mp3[hva]http://link4[hva]Anh Mãi yêu em 4",
"5" => "nhac5.mp3[hva]http://link4[hva]Anh Mãi yêu em 5"
);
$mpos = array_rand($danhsach["nhac"]);
$mnhac = explode("[hva]", $danhsach["nhac"][$mpos]);
$nhac_file = $mnhac[0];
$nhac_url = $mnhac[1];
$nhac_title = $mnhac[2];
?>
Rất dài và rất công phu (mặc dù khui nó ra có khi lại đổ ra 1 đống "tiểu tiết" nữa thì nguy, mất hứng... mất hứng)! Cái này chắc có ích cho 1 số người đây. Tôi nghĩ bạn đã mất rất nhiều công để sưu tầm nó, bởi w3schools không hào phóng cho nhiều thế đâu . Dẫu sao cũng có ích, chỉ có điều là cũng chẳng có gì mới cả!!!
Tóm lại, nếu bạn không đưa ra cái gì mới hơn là cái "mảng giả" nửa vời của bạn thì chúng ta dừng ở đây vậy. Chúng ta đã off topic nhiều rồi đấy.
Còn nữa,
LM wrote:
Nếu muốn trao đổi kỹ hơn, qua PHP.net.vn nhiều coder php sẽ giúp bạn TommyRader.
Sao thế? Chuyện nhỏ thôi mà, cần gì phải đi đâu? Có vẻ như mình không được chào đón ở đây (nơi mà người ta "làm" những thứ "sang" hơn kia: hacking & security).
Còn nữa,
LM wrote:
Bạn nên đọc sơ qua coi PHP nó code ra sao. :>.
...
Không nhầm thì bạn là dân "chính quy", suy nghĩ đơn giản một chút đi nhé.
1 là đã tốt nghiệp ĐH,CĐ
2 là đang còn đi học
Ở đây chúng ta bàn về technique, không phải personality. Bạn biết gì về tôi mà "phán vội" như thế. Tôi thích sự thẳng thắn, và chỉ thẳng thắn, đừng đi xa hơn MOD à!
|
|
|
LM wrote:
Ở đây tác giả chủ đề này có nói rõ, mà hổng ai để ý, nghĩ cao siêu hông à
chơi ngẫu nhiên 1 bài hát trong số 10 bài được chỉ định thì mình dùng mã PHP thế nào vậy các anh?
Câu này suy đoán có nghĩa .. có thể tác giả ko có kết nối CSDL mà biết trước các bài hát chỉ định sẵn, như FILE, LINK ...
Vâng, có thể như thế. Chúng ta bắt đầu từ đây.
LM wrote:
$danhsach["nhac"] = array(
"1" => "Bàihat1.mp3",
"2" => "Bàihat2.mp3",
....
"10" =>"Baihat10.mp3"
);
Không có gì mới ở đây, chúng ta tiếp tục,
LM wrote:
Còn muốn nhiều hơn thì dùng mảng trong mảng, ở đây đễ làm lẹ nhanh, LM ko dùng mảng trong mảng kiểu Chính Quy như thêm array con vào mà làm array giả với dấu "-", dùng hàm explode tách dấu - ra.
Code:
$danhsach["nhac"] = array(
"1" => "Bàihat1.mp3-http://link1",
"2" => "Bàihat2.mp3-http://link1",
....
"10" =>"Baihat10.mp3-http://link10"
);
Ở đây dùng dấu "-" để làm mảng giả, tuy nhiên nếu sợ trùng với các ký tự trong dữ liệu của mình có thể dùng các ký tự khác như |, || , +, hoặc thậm chí thích [HVA] , |hva| cũng được
Có vẻ như đây mới là "ý tưởng" của LM. Chúng ta thử phân tích.
Trên một system hệ *nix (rất nhiều các server thuộc dạng này) tất cả các kí tự trừ '/' và '\0' đều được phép dùng cho việc đặt tên file. Khi đó vấn đề sẽ nảy sinh. Ta sẽ dùng kí tự nào cho việc "tách" file và link đây. '\0' sẽ lập tức "cắt" chuỗi ngay tại vị trí của nó (nếu như PHP xử sự như C/C++, cái này tôi chưa thử với PHP, có thể tôi sai nhưng dùng '\0' chẳng hay tí nào). Còn '/' thì chắc chắn là có trong "http://..." rồi (có thể LM bảo "lấy" '/' đầu tiên, nhưng như vậy cũng chẳng có gì "sáng sủa" cả).
Có thể chúng ta đã đi xa hơn yêu cầu của người mở topic nhưng đã đến đây rồi thì cũng nên "triệt để" 1 tí.
Tất nhiên việc dùng "-" tách file và link để tạo "array giả" chỉ là chuyện nhỏ. Chúng ta chờ xem cái gì mới hơn ở LM vì đoạn mở đầu của LM hứa hẹn nhiều điều lắm:
LM wrote:
Cuộc đời không như màu hồng, có lúc hồng đẹp có lúc đen sì lì buồn bã. Code cũng vậy thôi, có lúc dùng cách này dùng cách khác hehe.
|
|
|
kidhackervn wrote:
Đoạn trên sẽ không cho kết quả mong muốn vì có thể các điều kiện này không thoả: id= '$rand1'/id= '$rand2'/id= '$rand3'. Các giá trị id có thể không liên tục do 1 số record đã bị xoá trong quá trình update database.
Điều này thì chắc khó xảy ra, vì thời gian chạy đoạn code trên (dù là chuối ) nhưng chắc cũng ko lâu đến nỗi trong thời gian đó có 1 vài record bị xoá (chắc ko trùng hợp đến vậy đâu).
Bạn không hiểu ý tôi rồi. Không phải "vì thời gian chạy đoạn code trên... ko lâu đến nỗi trong thời gian đó có 1 vài record bị xoá" mà là đã bị xoá trước đó rồi. Các id thường được gán tăng dần và không lập lại 1 id đã được gán trước đó dù dòng chứa id này đã bị xoá. Điều này tạo ra các "lỗ hổng" id và rất có thể $rand1,2,3 rơi vào các lỗ hổng này.
P/S: Xin lỗi tôi đã không đọc đoạn sau của bạn )
*PS: mà wên, bạn thang2rs nói đúng rồi, mình ko đọc kỹ đoạn code, $rand1 lấy random trong khoảng từ 1 cho đến totalrows, điều này chỉ làm đúng khi id đó do bạn tự gán và có kiểm tra để nó tăng dần đều (và mỗi khi có 1 row bị xoá thì phải update id 1 loạt các row sau row bị xoá, chắc chẳng ai làm dzầy)
|
|
|
kidhackervn wrote:
Đoạn code của canh_nguyen ko phải là chuối, mà là quá chuối ) Ví dụ thì cũng phải như thế nào chứ (chuẩn chuẩn 1 chút) chứ ví dụ kiểu này rồi người ta cứ tưởng vầy là chính quy rồi cứ thế mà làm thì có mà chết à.
Thay vì "nặng nhẹ" như thế chúng ta thử phân tích đoạn code của canh_nguyen xem sao.
Code:
<?php
include("config.php");
/* Counts the total rows of the table */
$totalrows = mysql_num_rows(mysql_query("SELECT * FROM example_table"));
$rand1 = rand(1,$totalrows); //sets rand1
$rand2 = rand(1,$totalrows); //sets rand2
$rand3 = rand(1,$totalrows); //sets rand3
/* Compares the first random if its the similar than other random it will change till it be different*/
while($rand1==$rand2){
$rand2 = rand(1,$totalrows);
}
while($rand1==$rand3){
$rand3 = rand(1,$totalrows);
}
/* Compares the second random if its the similar than other random it will change till it be different*/
while($rand2==$rand3){
$rand3 = rand(1,$totalrows);
}
while($rand2==$rand1){
$rand3 = rand(1,$totalrows);
}
/* Compares the thirth random if its the similar than other random it will change till it be different*/
while($rand3==$rand2){
$rand3 = rand(1,$totalrows);
}
while($rand3==$rand1){
$rand3 = rand(1,$totalrows);
}
/* Array the sql content */
$r = mysql_fetch_array(mysql_query("SELECT * FROM example_table WHERE id= '$rand1'"));
/* Echoes the content */
echo "$r[title]<br>";
$r2 = mysql_fetch_array(mysql_query("SELECT * FROM example_table WHERE id= '$rand2'"));
echo "$r2[title]<br>";
$r3 = mysql_fetch_array(mysql_query("SELECT * FROM example_table WHERE id= '$rand3'"));
echo "$r3[title]<br>";
?>
Có thể thấy ngay là đoạn code trên sẽ lập tức "phá sản" nếu như $totalrows < 3. Ta không thể tìm được 3 số nguyên khác nhau trong số ít hơn 3 số nguyên.
Giả sử $totalrows >= 3. ta tiếp tục.
Code:
/* Compares the first random if its the similar than other random it will change till it be different*/
while($rand1==$rand2){
$rand2 = rand(1,$totalrows);
}
while($rand1==$rand3){
$rand3 = rand(1,$totalrows);
}
/* Compares the second random if its the similar than other random it will change till it be different*/
while($rand2==$rand3){
$rand3 = rand(1,$totalrows);
}
while($rand2==$rand1){
$rand3 = rand(1,$totalrows);
}
/* Compares the thirth random if its the similar than other random it will change till it be different*/
while($rand3==$rand2){
$rand3 = rand(1,$totalrows);
}
while($rand3==$rand1){
$rand3 = rand(1,$totalrows);
}
Ở đây canh_nguyen đã tìm cách làm cho các $rand1,2,3 có giá trị khác nhau nhưng rất tiếc cách làm này không bảo đảm được điều đó. Bạn làm, đầu tiên là $rand2 # $rand1 và $rand3 # $rand1, sau đó $rand2 # $rand3. Nhưng không may lúc này $rand2/$rand3 có thể mang lại giá trị của $rand1. Bạn xem kĩ lại đoạn code này sẽ thấy ngay điều đó. Để làm điều này bạn có thể dùng đoạn code sau:
Code:
do {
$rand1 = rand(1,$totalrows); //sets rand1
$rand2 = rand(1,$totalrows); //sets rand2
$rand3 = rand(1,$totalrows); //sets rand3
} while ($rand1==$rand2 || $rand1==$rand3 || $rand2==$rand3)
Chúng ta tiếp tục,
Code:
/* Array the sql content */
$r = mysql_fetch_array(mysql_query("SELECT * FROM example_table WHERE id= '$rand1'"));
/* Echoes the content */
echo "$r[title]<br>";
$r2 = mysql_fetch_array(mysql_query("SELECT * FROM example_table WHERE id= '$rand2'"));
echo "$r2[title]<br>";
$r3 = mysql_fetch_array(mysql_query("SELECT * FROM example_table WHERE id= '$rand3'"));
echo "$r3[title]<br>";
Đoạn trên sẽ không cho kết quả mong muốn vì có thể các điều kiện này không thoả: id= '$rand1'/id= '$rand2'/id= '$rand3'. Các giá trị id có thể không liên tục do 1 số record đã bị xoá trong quá trình update database.
Có lẽ dùng như 1 số bạn đề nghị:
Code:
"SELECT * FROM table ORDER BY RAND() LIMIT 3"
là ổn.
Vài dòng trao đổi.
|
|
|
conmale wrote:
huynhfxvn wrote:
ma nguon don gian la cach bao mat tot nhat ?
Nguyên tắc thì quả như vậy, nhưng thực tế không đơn giản như vậy. Nhu cầu càng nhiều thì chức năng càng nhiều, chức năng càng nhiều thì mã nguồn càng phức tạp, mã nguồn càng phức tạp thì càng dễ bị lỗi.
Để khắc phục "vấn nạn" giây chuyền này, software phải được thiết kế vững vàng, chặc chẽ. Người coding phải tuân thủ đúng lề lối chung được đặt ra (convention). Khâu kiểm tra và quản lý phiên bản phải nhạy bén và kinh nghiệm. Khâu testing phải có phương pháp và kế hoạch rõ ràng trước khi "release" software.
Bởi thế, vì bảo mật mà nhân nhượng tính năng thì kẹt. Vì tính năng mà nhân nhượng bảo mật cũng kẹt ). Vấn đề là sự cân bằng giữa nhu cầu và bảo mật.
Thân mến.
Cũng "không thể đúng hơn" . Chẳng ai lại đi cắt cụt tay chân mình để không bị thừa cân. Vui thôi... Thật ra "biết" được điều này không khó nhưng "hiểu" được nó thì không dễ chút nào. Kinh nghiệm, môi trường, sự nhạy bén... sẽ chỉ cho bạn làm cách nào.
|
|
|
huynhfxvn wrote:
ma nguon don gian la cach bao mat tot nhat ?
Không thể đúng hơn. Đó là 1 phần của nguyên lí KISS (Keep it simple, stupid)
|
|
|
Endless_Hope wrote:
Trên tinh thần anh vừa nêu, nổ lực dịch 1 bài khó như vậy của các Mod cho newbie tụi em tham khảo rất đáng trân trọng.
Vâng, dịch 1 bài ít nhiều cũng tốn công sức. Rất đáng trân trọng. Tôi cũng chỉ muốn cho bài dịch được tốt hơn thôi mà.
Tụi em ko đòi hỏi gì hơn
Không đúng. Đừng "an phận" như thế. Có thể làm tốt hơn mà!
Em xin dừng
Tôi cũng dừng đây, chỉ có điều còn những người khác nữa...
|
|
|
Endless_Hope wrote:
Nếu 1 từ nào đó lặp lại trong cùng 1 bài dịch thì em thích phân bố nó đều khi dịch, miễn sao từ đó đúng ý là được. Chính vì suy nghĩ này mà em thấy "lỗ hỏng, kẻ hở, khe hở, điểm yếu, nơi dễ bị xâm nhập...." có thể luân phiên thay nhau, tuỳ vào ý của toàn câu chứa từ đó.
:wink:
Cũng đúng! Tuy nhiên bàn về cái hay của dịch thuật thì... mênh mông lắm. Hơn nữa, tôi cũng không giỏi về cái này.
Chúng ta tạm gác chuyện bàn về "cách dịch" mà chỉ nói về cái "đúng" (đến mức có thể) của bản dịch. Vì, như tôi đã nói ở trước, đòi hỏi sự "chỉn chu" của 1 bản dịch trêm 1 forum là rất khó. Có quá nhiều thông tin (tiếng Anh) trên internet và các thông tin này cần được cập nhật liên tục. Ta không có nhiều thời gian để "thưởng thức" chúng đâu.
|
|
|
Endless_Hope wrote:
Từ này dùng trong Security thì theo em cứ mạnh dạn dịch là "lỗ hỏng"/"kẻ hở"/"điểm yếu".
Có lí, có lẽ "điểm yếu" là thích hợp?
|
|
|
lntheend wrote:
thanks bạn đã giúp
nhưng mình muốn biết rõ hơn về đoạn code đoá bạn có thể giải thích hông?
còn 1 cái nữa là sao mình hông thấy form nhập use và pass của yahoo trong đoá?
mình nghĩ biết chính xác form chính xác của yahoo mình mới tự đăng nhập vào được chứ
Code trên lấy từ mạng. Thật ra code này cũng từ chính yahoo. Bạn vào trang login của yahoo rồi "view page source" sẽ thấy nó ngay thôi.
|
|
|
Rất vui (nói thật) vì có cái để chúng ta trao đổi.
Tôi biết yêu cầu 1 sự "chỉn chu" đối với một bản dịch trên 1 forum là rất khó. Tuy nhiên bản dịch cần phải thể hiện đúng, ít nhất là về mặt ý nghĩa, nguyên bản.
Chúng ta bắt đầu,
"leads to almost all other vulnerabilities" là "đến được hầu như tất cả các điểm dễ bị tổn thương khác", không phải "dẫn đến đa số những sự tổn thương khác"
Bản dịch dùng từ "tổn thương" có vẻ như chưa chính xác cho lắm nhưng ý là đúng so với bản gốc. Khi đọc ý bạn dịch thật sự mình chưa hiểu bạn muốn nói gì, vì cách bạn nói là cách của người Anh
đến được mang nghĩa Tainted input (len lỏi) đến (tới) được các điểm dễ bị tổn thương khác khác với dẫn đến mang nghĩa Tainted input là nguyên nhân gây nên các điểm dễ bị tổn thương khác
OWASP Guide là "OWASP Guide", không phải "sự hướng dẫn của OWASP"
Cái này thì đúng, vì nếu là "hướng dẫn" thì chữ Guide không cần phải viết hoa
Không chỉ vì "viết hoa" mà còn vì OWASP Guide là tên riêng, hơn nữa nếu sự hướng dẫn của OWASP thi phải là OWASP's Guide
- the most common weakness found in web applications là "điểm yếu phổ biến nhất của các ứng dụng web", không phải "một nhược điểm phổ biến được tìm thấy đa số trong các ứng dụng web"
Câu dịch của bạn nghe "suôn" hơn nhỉ
Bạn không hiểu ý của tôi, không phải chữ found mà the most common weakness. Hơn nữa đa số không tìm thấy trong nguyên bản. Tuy nhiên điều này không quá quan trọng bởi không làm thay đổi ý của nguyên bản.
Và, nếu bạn để ý, trên đây chỉ là 1 đoạn ngắn ở đầu bản dịch, không phải tất cả bản dịch.
Có thể đã trao đổi hơi thẳng thắn, chỉ mong kết quả được tốt hơn thôi.
|
|
|
Xin xem http://www.htmlforum.net/hvaonline/posts/list/2473.html
Không chắc là mình đúng, có gì sai xin chỉ cho.
Bắt đầu từ đầu, xin trích 1 đoạn, nguyên văn:
According to the OWASP Guide, unvalidated input is the most common weakness found in web applications. Tainted input leads to almost all other vulnerabilities in these environments (OWASP, 2005). Before we look at how to prevent this weakness from spreading throughout your web solutions, let’s examine the potential threats to your business when tainted input is allowed to reach your processing components.
Figure 1 is a logical view of four of the ways in which input is received by an application
Input from any one of these sources impacts how an application accesses, processes, and displays data.
được dịch là:
Theo sự hướng dẫn của OWASP ,dữ liệu vào không hợp lệ là một nhược điểm phổ biến được tìm thấy đa số trong các ứng dụng web .Dữ liệu vào hỏng dẫn đến đa số những sự tổn thương khác trong môi trường này http://www.owasp.org/index.php/Data_Validation).
Trước khi chúng ta xem làm thế nào để ngăn ngừa nhược điểm lan rộng trong toàn bộ website của bạn (soltution ??).,chúng ta sẽ khảo sát khả năng nguy hiểm tiềm tàng gây ra cho công việc của bạn ,khi dữ liệu vào hỏng cho phép hiểu được thành phần xử lý của bạn
Hình 1 là một sự miêu tả hợp lý của bốn đường dữ liệu vào được tiếp nhận bời một ứng dụng
Làm thế nào một ứng dụng truy xuất,xử lý và hiển thị dữ liệu vào từ một trong số những tác động trực tiếp.
- OWASP Guide là "OWASP Guide", không phải "sự hướng dẫn của OWASP"
- unvalidated là "không được kiểm tra (tính hợp lệ)", không phải "không hợp lệ"
- the most common weakness found in web applications là "điểm yếu phổ biến nhất của các ứng dụng web", không phải "một nhược điểm phổ biến được tìm thấy đa số trong các ứng dụng web"
- leads to almost all other vulnerabilities là "đến được hầu như tất cả các điểm dễ bị tổn thương khác", không phải "dẫn đến đa số những sự tổn thương khác"
- is allowed to reach là "được phép đến được", không phải "cho phép hiểu được"
- a logical view là "một sơ đồ minh hoạ", không phải "một sự miêu tả hợp lý"
- Input from any one of these sources impacts how an application accesses, processes, and displays data là "Dữ liệu nhập từ bất kì nguồn nào trong số (4) những nguồn này đều tác động đến cách mà một ứng dụng truy xuất, xử lí và hiển thị dữ liệu.", không phải "Làm thế nào một ứng dụng truy xuất,xử lý và hiển thị dữ liệu vào từ một trong số những tác động trực tiếp"
-...
-...
Và còn nhiều nữa, mong mọi người cho ý kiến.
|
|
|
Thử (from Mr Google):
Code:
<form name="login_form" method="post" action="https://login.yahoo.com/config/login" onsubmit="return hash(this,'http://login.yahoo.com/config/login')">
<input type="hidden" name=".done" value="http://mail.yahoo.com" >
<input type="hidden" name=".tries" value="1">
<input type="hidden" name=".src" value="ym">
<input type="hidden" name=".md5" value="">
<input type="hidden" name=".hash" value="">
<input type="hidden" name=".js" value="">
<input type="hidden" name=".last" value="">
<input type="hidden" name="promo" value="">
<input type="hidden" name=".intl" value="us">
<input type="hidden" name=".bypass" value="">
<input type="hidden" name=".partner" value="">
<input type="hidden" name=".u" value="">
<input type="hidden" name=".v" value="0">
<input type="hidden" name=".challenge" value="">
<input type="hidden" name=".yplus" value="">
<input type="hidden" name=".emailCode" value="">
<input type="hidden" name="pkg" value="">
<input type="hidden" name="stepid" value="">
<input type="hidden" name=".ev" value="">
<input type="hidden" name=".branch" value="">
<input type="hidden" name="hasMsgr" value=0>
<input type="hidden" name=".chkP" value="Y">
<input name="login" size="17" value="" type="text">
<br />
<input name="passwd" size="17" value="" type="password">
<br />
<input type="submit" name=".save" value="Go To Yahoo Mail">
</form>
|
|
|
Một bài viết rất hay, chỉ có điều ... chẳng liên quan gì đến hack cả!!!
"Hack Lan bằng lênh thường trú"?
- NET không thường trú. Đó là 1 application được gọi khi gõ NET trong Command Prompt. Đường dẫn (Windows XP): C:\WINDOWS\system32\net.exe.
- NET không hack được gì cả. Đây là 1 command do Windows cung cấp, thường dùng trong các script để tự động hoá một số công việc lên quan đến net (trong file *.bat chẳng hạn). Tất cả những cái NET làm được đều có thể dễ dàng thực hiện bằng Window Explore.
Không thể xem việc truy cập vào 1 resource đã được shared trên 1 máy tính nào đó là hack được. Càng không thể xem việc truy cập vào 1 account không đặt password trên 1 máy tính nào đó là hack được.
|
|
|
cuonghm wrote:
Sau khi đọc bài của bác thang2rs, tôi không hiểu là quan điểm của bài reply đang nói về vấn đề của bác ngochoan2003 hay về quan điểm của tôi hay là về quan đỉêm của bác trong vấn đề này?
Cả 3.
Xin lỗi nếu như bài viết của tôi làm bạn không hiểu. Thật ra là tôi hoàn toàn đồng ý với quan điểm của bạn. Tôi thích cách đặt vấn đề của bạn (và của cả IQ nữa): không bị đánh lừa bởi các tool, các lệnh có vẻ như "chuyên nghiệp" lắm.
Quan điểm của tôi là có thể có cách lấy pass của admin (thông qua lỗi bảo mật của Windows chẳng hạn) nhưng không phải bằng cách mà ngochoan2003 đưa ra (qua 2 bài viết cuối). Ở đây tôi không bàn đến các cách "phi chính qui" (như "xâm nhập vật lí" chẳng hạn) hay khai thác sự bất cẩn quá đáng của người dùng (như không đặt pass cho admin chẳng hạn). Các cách này có thể giải quyết được 1 trường hợp cụ thể, nhưng về mặt kĩ thuật chúng chẳng có gì để học hỏi cả.
|
|
|
Tôi chưa bao giờ hack nhưng kinh nghiệm của nhiều năm làm máy tính cho thấy mọi thứ không đơn giản như thế.
Chung quy là phải tìm được password của một user qua các tool quét.
Đối với bài viết thứ nhất, trong cách 2, mình thấy không hợp lý ở chỗ là, sau khi biết được một cổng đang mở, telnet vào có giải quyết được vấn đề gì không? Vì thực ra telnet cũng chỉ nối socket đến một cổng đang mở của một dịch vụ, việc giao tiếp sau đó phải theo giao thức, theo các hàm API của dịch vụ đó. Chẳng hạn bạn thử quét cổng 80 đến IP của một Web server xem có được không? Và sau đó thì làm được gì? Thậm chí là có thể telnet được đến các cổng 22 hoặc 23 của Telnet hoặc SSH( và các dịch vụ cho phép remote control khác) đi nữa, cũng phải làm thể nào để biết được user/pass thì mới đến được bước tiếp theo.
Không bàn đến việc làm sao để lấy được danh sách các user của hệ thống, chúng ta hãy nói đến việc làm sao để dò, quét được pass của một user. Theo tôi biết thì các tool để quét được pass cũng chỉ dựa trên một sô bước cơ bản, theo một từ điển gồm các khả năng có thể xảy ra nhất, còn sau đấy thì cũng phải quét hết các trường hợp có thể xảy ra : pass có chiều dài là n ký tự, các trường hợp có thể xảy ra đối với mỗi ký tự đó là…
Để dò được pass được đặt theo các policy về chiểu dài, đủ các ký tự hoa, thường, chữ số,.. tôi nghĩ chắc đến đời con cháu chúng ta may ra mới có được kết quả.
Tôi nghĩ có cách để thử nghiệm: có một số tài liệu về cách đặt password sao cho khó bị dò, hoặc tham khảo cách đặt theo các policy về chiều dài tối thiểu và đủ các ký tự hoa thường, chữ số, sau đó thử dùng các cách mà bạn tham khảo được ở trên, và thử dò xem mất bao lâu thì có được kết quả?
Hoàn toàn chính xác.
"NET" mà bạn dùng do Windows cung cấp. Đây thuần tuý là công cụ mạng, được dùng hoàn toàn "chính qui", chẳng liên quan gì đến hack cả (thậm chí có thể xem là yếu nữa do thiếu GUI).
Chung quy là phải tìm được password của một user qua các tool quét.
Vấn đề là ở đây. Một khi đã có password của một account nào đó (tốt nhất là account thuộc nhóm Administrators) thì... chẳng còn gì để bàn nữa!
Các tool quyét mà bạn đề cập dùng phương pháp thử và sai để dò password, bắt đầu từ những chuỗi có nhiều khả năng nhất, một cách tự động. Có thể đây là các tool tốt nhưng chúng cũng chỉ làm được đến thế.
Tất nhiên bạn có thể xâm nhập vào một máy tính nào đó bằng cách này nhưng rõ ràng là máy tính này đã không được bảo vệ hoặc bảo vệ quá sơ sài. Trong trường hợp này bạn đã khai thác được điểm yếu của người dùng máy tính hơn là chính chiếc máy tính đó. Và như vậy, về mặt kĩ thuật, chẳng có gì đáng học hỏi cả.
Tôi nghĩ có cách để thử nghiệm: có một số tài liệu về cách đặt password sao cho khó bị dò, hoặc tham khảo cách đặt theo các policy về chiều dài tối thiểu và đủ các ký tự hoa thường, chữ số, sau đó thử dùng các cách mà bạn tham khảo được ở trên, và thử dò xem mất bao lâu thì có được kết quả?
Đúng. Tất cả các phép thử đều thông qua mạng (không dưới 0.5s cho 1 phép thử trên mạng LAN). Có thể bạn phải "di chúc" chúng cho đời con của bạn đấy chứ
|
|
|
"gpc" trong get_magic_quotes_gpc() chỉ GET/POST/COOKIES. Dùng get_magic_quotes_gpc() để biết server có set quote hay không. Nếu không, các biến $_GET/$_POST/$COOKIES mang đúng giá trị của nó (và ta không phải làm gì cả). Nếu có, ta phải trả biến về đúng giá trị của nó (dùng stripslashes()).
Trong mọi trường hợp ta cần có giá trị đúng của biến, sau đó tuỳ trường hợp mà ta sẽ xử lí tiếp.
Trong trường hợp của bạn, do bạn gởi biến qua URL (index.php?act=search&kw=...) nên biến $kw lấy từ $_GET['kw']. Trước khi lấy $kw ta phải kiểm tra magic quote, rồi tuỳ trường hợp mà ta dùng stripslashes(), từ đó ta mới có giá trị đúng của biến. Sau ta escape biến này bằng mysql_real_escape_string() trước khi đưa vào mysql_query(). Nếu bạn bỏ qua bước này, giả sử server set quote = On, thì khi gọi mysql_real_escape_string() bạn sẽ escape 2 lần. Và kết qu3a tất nhiên sẽ khác.
|
|
|
Code:
if (get_magic_quotes_gpc()) {
$mediasinger=stripslashes($_GET['kw']);
} else {
$mediasinger=$_GET['kw'];
}
$mediasinger=mysql_real_escape_string($mediasinger);
Lại phải nhắc lại: cái này là bắt buộc mặc dù trong trường hợp của bạn là không cần thiết. Tôi đoán là server đã set magic quotes = on. Khi đó nếu $mediasinger="it's me" chẳng hạn sẽ mang giá trị mới là "it\'s me". Kí tự ' đã được escaped và bạn có thể dùng $mediasinger trong mysql_query() mà không gây bất cứ lỗi nào. Tuy nhiên nếu magic quotes = off thì vấn đề sẽ phát sinh. Lí do là "it's me" mà không được escaped thì sẽ gây lỗi khi chạy mysql_query(). Hơn nữa mysql_real_escape_string() escape các kí tự đặc biệt khác với cách của server (đã nói rất rõ ở các bài trước).
Code:
cho em hỏi thêm về cái title khi di chuột vào tên singer có dấu ' cũng bị ngắt quãng luôn, phải dùng hàm gì bác ui?
Dùng như ta đã dùng với urlencode() và htmlentities()
Code:
Hàm gì để lấy ký tự đầu tiên và cuối cùng của chuỗi bác nhẩy, vì khi người ta nhập dấu cách vào đầu hoặc sau chuỗi sẽ gây rối loạn bộ search của em, em muốn lọc luôn khi user đăng bài, mà làm sao làm mất dấu cách ở đầu(or cuối) đi được bác, dùng hàm str_change có được ko?
$mediasinger=trim($mediasinger);
Cách dùng:
if (get_magic_quotes_gpc()) {
$mediasinger=stripslashes($_GET['kw']);
} else {
$mediasinger=$_GET['kw'];
}
$mediasinger=trim($mediasinger);
$mediasinger=mysql_real_escape_string($mediasinger);
|
|
|
ví dụ như từ khoá trên link search sẽ là index.php?act=search&kw=I chuỗi đằng sau sẽ bị mất vì gặp dấu '
Wow! Vấn đề giờ đã theo hướng hoàn toàn khác. Hãy thử:
Code:
if (get_magic_quotes_gpc()) {
$mediasinger=stripslashes($_POST['mediasinger']);
} else {
$mediasinger=$_POST['mediasinger'];
}
$querystring='act=search&kw='.urlencode($mediasinger);
$urlstring='index.php?'.htmlentities($querystring);
Sau đó trong index.php (lưu ý $_GET):
Code:
if (get_magic_quotes_gpc()) {
$mediasinger=stripslashes($_GET['kw']);
} else {
$mediasinger=$_GET['kw'];
}
$mediasinger=mysql_real_escape_string($mediasinger);
Rồi xây dựng $query như ta đã làm.
|
|
|
|
|
|
|