banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: WinDak  XML
Profile for WinDak Messages posted by WinDak [ number of posts not being displayed on this page: 0 ]
 
Đối với lập trình web = OOP bạn nên xem thử coi độ complicated của website mình thế nào. Nếu 90% là web tĩnh thì sử dụng OOP giống như lấy dao mổ trâu đi giết ruồi.

Nếu bạn làm web động - nghĩa là sử dụng nhiều database, update thông tin liên tục, interactive với người dùng qua form, etc... thì theo kinh nghiệm bản thân trước nhất phải xem là phần nào của hệ thống của bạn bị ảnh hưởng thay đổi nhiều nhất, thì phần ấy sẽ form thành 1 class.

Ví dụ những thứ sau bạn có thể form class (nhìn qua website của bạn) :
- database
- categories
- article
- mainpage
- templete
...

Trong index bạn có thể để :

Code:
// include class
$main = new main();
$article = new article(...);
$categories = new categories(..);
$template = new template(xxx);
$template->setArticleList($article);
$template->setCategories($categories);
$main->build($templete);


Đây chỉ là 1 ví dụ, còn rất nhiều cách để optimize. Bạn cũng có thể tham khảo thêm 1 số Design Pattern như Model-View-Controller(MVC), rất hữu ích khi build 1 website lớn.



Bạn có thể tìm hiểu về các thuật toán Web Crawler.
Google một chút là được.
Example : http://java.sun.com/developer/technicalArticles/ThirdParty/WebCrawler/

conmale wrote:

WinDak wrote:
Em suggest 1 cách đơn giản, đó là submit request = method POST thay vì GET, như đang sử dụng. 


smilie) nhưng POST vẫn có thể bị intercept như thường mà? Vấn đề ở chỗ xác thực được hành động xóa bài đó có đúng là moderator thực hiện có chủ định hay vô tình xóa vì dính CSRF. Nếu thay GET bằng POST nhưng không có cơ chế kiểm soát thì đâu có gì khác nhau đâu?
 


^^ uhm, anh nói đúng ạ, nhưng với trường hợp riêng ở trên, thì thay POST cho GET là đưa về tình trạng chung của hệ thống phải không ạ.

Dẫu biết là attaker vẫn có thể trick user send request POST nhưng em nghĩ bước đầu tiên cần phải làm vẫn là hạn chế tối đa các request GET(không sử dụng càng tốt)

Về việc add thêm 1 trường đặc biệt vào trong request gửi đi, theo em vẫn có cách bypass nếu như attacker sử dụng được javascript (XSS ?)...
ví dụ ta có thể xài getElementbyID hoặc document.form[x].field.value etc...










Em suggest 1 cách đơn giản, đó là submit request = method POST thay vì GET, như đang sử dụng.

yeusaydam wrote:
cho em cái link chứa cái đó bác ơi.
 


http://metasploit.org/projects/Framework/
lần sau google nhé ^^
Vấn đề của bạn là do cấu hình php.
Bạn cần edit file php.ini. (để biết file này ở đâu bạn có thể chạy php_info(); )
Sau đó bạn tìm đến chỗ khai báo biến register_globals và set lại :
Code:
register_globals = ON


để hiểu thêm về cái này bạn có thể tham khảo
http://sg.php.net/register_globals
Cám ơn bạn, mình biết lệnh emerge --resume, nhưng cái đó cũng chỉ resume lại 1 package trong nhiều package của 1 ứng dụng thôi. Có những package compile rất lâu, lúc được gần hết package đó rồi, nhưng lần resume vẫn compile lại từ đầu

mình cũng đã emerge sync T_T nhưng vẫn ko đủ ... chỉ có 1 ít thêm vào thôi, ff 2.0 cũng không có, phải load ebuild về đấy
Em cài gentoo-linux cho việc học và nghiên cứu. Đây là thông tin về hệ thống của em
Code:
emerge --info
Portage 2.1-r2 (default-linux/amd64/2006.1/desktop, gcc-4.1.1, glibc-2.4-r3, 2.6.17-gentoo-r7 x86_64)
=================================================================
System uname: 2.6.17-gentoo-r7 x86_64 AMD Athlon(tm) 64 Processor 3500+
Gentoo Base System version 1.12.1
dev-lang/python: 2.4.3-r1
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache: [Not Present]
dev-util/confcache: [Not Present]
sys-apps/sandbox: 1.2.17
sys-devel/autoconf: 2.13, 2.59-r7
sys-devel/automake: 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils: 2.16.1-r3
sys-devel/gcc-config: 1.3.13-r3
sys-devel/libtool: 1.5.22
virtual/os-headers: 2.6.11-r2
ACCEPT_KEYWORDS="amd64"
AUTOCLEAN="yes"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/rc.d /etc/revdep-rebuild /etc/terminfo /etc/wget"
CXXFLAGS="-O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="amd64 X alsa arts avi berkdb bitmap-fonts cairo cdr cli crypt cups dbus dlloader dri dvd dvdr eds emboss encode esd fam firefox fortran gdbm gif gnome gpm gstreamer gtk gtk2 hal ipv6 isdnlog jpeg kde ldap libg++ mad mikmod mp3 mpeg ncurses nls nptl nptlonly ogg opengl oss pam pcre pdflib perl png ppds pppd python qt3 qt4 quicktime readline reflection sdl session spell spl ssl tcpd truetype truetype-fonts type1-fonts udev unicode vorbis xml xorg xv zlib elibc_glibc input_devices_keyboard input_devices_mouse input_devices_evdev kernel_linux userland_GNU"
Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, LINGUAS, MAKEOPTS, PORTAGE_RSYNC_EXTRA_OPTS


Bình thường cài ứng dụng gì em dùng command emerge
ví dụ : emerge netcat ( sau đó gentoo sẽ tự download các package cần thiết và install )
nhưng cái này chỉ ứng dụng được với 1 số , và thường version cài vào là version định sẵn trong config (??), nên muốn cài version nào mới hơn em phải kiếm file .ebuild về rồi xài lệnh ebuild [pathtofile] merge để cài

Lần rồi em thử cài firefox 2.0 , em coi thử requirement của nó thì thấy như thế này
* Linux kernel 2.2.14 (with glibc 2.3.2, XFree86-3.3.6, gtk+2.0, fontconfig/xft and libstdc++5) -- trong quá trình cài thì nó bị lỗi ở khâu compile (uppack -> compile ) như sau
Code:
[size=-1]x86_64-pc-linux-gnu-g++ -o nsCipherInfo.o -c -fvisibility=hidden -DNSS_ENABLE_ECC -DMOZILLA_INTERNAL_API -DOSTYPE=\"Linux2.6\" -DOSARCH=\"Linux\" -DBUILD_ID=0000000000 -I/usr/include/nss -I../../../../dist/include/nspr -I../../../../dist/include/xpcom -I../../../../dist/include/string -I../../../../dist/include/necko -I../../../../dist/include/uriloader -I../../../../dist/include/pref -I../../../../dist/include/caps -I../../../../dist/include/dom -I../../../../dist/include/intl -I../../../../dist/include/locale -I../../../../dist/include/profile -I../../../../dist/include/windowwatcher -I../../../../dist/include/js -I../../../../dist/include/widget -I../../../../dist/include/layout -I../../../../dist/include/content -I../../../../dist/include/xpconnect -I../../../../dist/include/unicharutil -I../../../../dist/include/pipboot -I../../../../dist/include/pipnss -I../../../../dist/include -I/usr/include/nspr -fPIC -DGENTOO_NSPLUGINS_DIR=\"/usr/lib64/nsplugins\" -DGENTOO_NSBROWSER_PLUGINS_DIR=\"/usr/lib64/nsbrowser/plugins\" -fno-rtti -fno-handle-exceptions -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -pipe -fPIC -Wno-return-type -w -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -ffunction-sections -O2 -DGENTOO_NSPLUGINS_DIR=\"/usr/lib64/nsplugins\" -DGENTOO_NSBROWSER_PLUGINS_DIR=\"/usr/lib64/nsbrowser/plugins\" -DMOZILLA_CLIENT -include ../../../../mozilla-config.h -Wp,-MD,.deps/nsCipherInfo.pp nsCipherInfo.cpp
nsNSSCallbacks.h:99: error: 'SEC_HTTP_SERVER_SESSION' has not been declared
nsNSSCallbacks.h:105: error: 'SEC_HTTP_SERVER_SESSION' has not been declared
nsNSSCallbacks.h:110: error: 'SEC_HTTP_REQUEST_SESSION' has not been declared
nsNSSCallbacks.h:158: error: 'SEC_HTTP_SERVER_SESSION' has not been declared
nsNSSCallbacks.h:163: error: 'SEC_HTTP_SERVER_SESSION' has not been declared
nsNSSCallbacks.h:171: error: 'SEC_HTTP_SERVER_SESSION' has not been declared
nsNSSCallbacks.h:177: error: 'SEC_HTTP_SERVER_SESSION' has not been declared
nsNSSCallbacks.h:182: error: 'SEC_HTTP_REQUEST_SESSION' has not been declared
nsNSSCallbacks.h:189: error: 'SEC_HTTP_REQUEST_SESSION' has not been declared
nsNSSCallbacks.h:198: error: 'SEC_HTTP_REQUEST_SESSION' has not been declared
nsNSSCallbacks.h:206: error: 'SEC_HTTP_REQUEST_SESSION' has not been declared
nsNSSCallbacks.h:219: error: 'SEC_HTTP_REQUEST_SESSION' has not been declared
nsNSSCallbacks.h:225: error: 'SEC_HTTP_REQUEST_SESSION' has not been declared
nsNSSCallbacks.h:232: error: 'SEC_HttpClientFcn' does not name a type
nsNSSCallbacks.h: In static member function 'static SECStatus nsNSSHttpInterface::freeSessionFcn(int)':
nsNSSCallbacks.h:173: error: invalid static_cast from type 'int' to type 'nsNSSHttpServerSession*'
nsNSSCallbacks.h: In static member function 'static SECStatus nsNSSHttpInterface::setPostDataFcn(int, const char*, PRUint32, const char*)':
nsNSSCallbacks.h:194: error: invalid static_cast from type 'int' to type 'nsNSSHttpRequestSession*'
nsNSSCallbacks.h: In static member function 'static SECStatus nsNSSHttpInterface::addHeaderFcn(int, const char*, const char*)':
nsNSSCallbacks.h:202: error: invalid static_cast from type 'int' to type 'nsNSSHttpRequestSession*'
nsNSSCallbacks.h: In static member function 'static SECStatus nsNSSHttpInterface::trySendAndReceiveFcn(int, PRPollDesc**, PRUint16*, const char**, const char**, const char**, PRUint32*)':
nsNSSCallbacks.h:214: error: invalid static_cast from type 'int' to type 'nsNSSHttpRequestSession*'
nsNSSCallbacks.h: In static member function 'static SECStatus nsNSSHttpInterface::cancelFcn(int)':
nsNSSCallbacks.h:221: error: invalid static_cast from type 'int' to type 'nsNSSHttpRequestSession*'
nsNSSCallbacks.h: In static member function 'static SECStatus nsNSSHttpInterface::freeFcn(int)':
nsNSSCallbacks.h:227: error: invalid static_cast from type 'int' to type 'nsNSSHttpRequestSession*'
gmake[4]: *** [nsCipherInfo.o] Error 1
gmake[4]: Leaving directory `/var/tmp/portage/mozilla-firefox-2.0.0.1/work/mozilla/security/manager/ssl/src'
gmake[3]: *** [libs] Error 2
gmake[3]: Leaving directory `/var/tmp/portage/mozilla-firefox-2.0.0.1/work/mozilla/security/manager/ssl'
gmake[2]: *** [libs] Error 2
gmake[2]: Leaving directory `/var/tmp/portage/mozilla-firefox-2.0.0.1/work/mozilla/security/manager'
gmake[1]: *** [tier_50] Error 2
gmake[1]: Leaving directory `/var/tmp/portage/mozilla-firefox-2.0.0.1/work/mozilla'
make: *** [default] Error 2
!!! ERROR: www-client/mozilla-firefox-2.0.0.1 failed.
Call stack:
ebuild.sh, line 1539: Called dyn_compile
ebuild.sh, line 939: Called src_compile
mozilla-firefox-2.0.0.1.ebuild, line 187: Called die
!!! (no error message)
!!! If you need support, post the topmost build error, and the call stack if relevant.[/size]

(bản firefox 1.5 của em chạy tốt )

Nhìn qua thì thấy nó là lỗi khi compile nên em đã thử update bản libstdc++v3 3.3.4 (<=>libstdc++5(??)) nhưng vẫn bị lỗi như vậy...
Mong mọi người giúp đỡ
Tiện thể nếu được mong mọi người giải thích cho em rõ hơn về emerge & ebuild... nhất là có cách nào resume sau khi bị lỗi giữa chừng hay không, vì mỗi lần run nó lại bắt đầu lại từ đầu ...
Cám ơn mọi người

Nếu bạn muốn xem source code thì mở bằng bất cứ trình soạn thảo văn bản nào cũng được . (notepad, wordpad ..)

Nếu muốn xem thử output sau khi biên dịch thì bạn có thể cài Apache/IIS + PHP tại localhost , hoặc up lên 1 server có hỗ trợ php

Chúc vui

uk21c wrote:
Bạn ơi !
Nếu bạn lập trình hướng đối tượng thì k ai có thể hack được đâu ! Ok!
Ví dụ:
+a.php
<?php
function abc(){
$a = $_Get["abc"];
echo $a;
}
?>
+b.php
<?php
include("a.php"smilie;
abc();
?>

 


Cái này của cậu sao lại gọi là "hướng đối tượng" ?????????????

cho những ai chưa hiểu 114v viết gì
http://sg.php.net/manual/en/function.preg-replace.php
http://en.wikipedia.org/wiki/Regular_expression

preg_replace("/[^a-zA-Z0-9\-\_]/", "", $_GET['act'])
đoạn này có thể giải thích là , loại hết những kí tự đặc biệt và chỉ để lại các kí tự alphanumeric (a,b,...0-9) kí tự '-' và '_' (mình không hiểu là 114v thêm 2 kí tự này làm gì)

Với cách lọc này , attacker không thể include được file bên ngoài , nhưng vẫn có thể include được local file (trong cùng directory đang làm việc) nhưng mức độ nguy hiểm không cao, tùy cách mà cậu sử dụng biết act này .

Chúc vui

http://www.php.net/manual/en/function.flock.php
http://www.php.net/manual/en/function.list.php
http://www.php.net/manual/en/function.each.php
http://www.php.net/manual/en/function.feof.php

Trong đó có hướng dẫn và ví dụ rất cụ thể ^^
Chúc vui

Thomas_Black wrote:
Xin lỗi vì cắt ngang nhưng ai bảo các bạn Pascal không để viết chương trình hay ho, hiện thời có trình biên dịch Free Pascal tuy còn nhiều lỗi biên dịch nhưng bản dành cho Linux khá ổn định và mạnh: http://itaprogaming.free.fr/tutorial.html - vào đây để xem ứng dụng phát triển giả lập Gameboy Advance viết bằng FPC! Và đây: http://community.freepascal.org:10000/bboards/forum?forum_id=24092 rất nhiều ứng dụng hay viết bằng Pascal! 

smilie chào bạn
Có lẽ bạn hơi hiểu nhầm ý mình , mình không bảo là không thể , mà ý mình là không cần thiết phải mất công như vậy. Lý do ?
Dĩ nhiên mình không nói pascal yếu , mình cũng đã sử dụng pascal 4 năm, có thể chưa biết hết công dụng của nó nhưng mình dám khẳng định là một chương trình viết = pascal hàng chục dòng có thể viết lại chỉ bằng vài dòng = các ngôn ngữ mạnh hiện nay như java / C++ ( sử dụng các thư viện STL khổng lồ , riêng java thì thư viện API của nó ngày càng mở rộng giúp cho programmer thuận tiện hơn trong việc lập trình, bạn có thể vào java.sun.com để tham khảo http://java.sun.com/j2se/1.5.0/docs/api/ )
Theo kinh nghiệm của mình thì nếu bạn mới bước vào học lập trình. Chưa có kinh nghiệm và kiến thức gì thì có 2 ngôn ngữ khá dễ học.

1) Pascal - Ngôn ngữ lập trình cấu trúc (procedural/imperative) - cực kì đơn giản và dễ học .
Lợi ích của việc học pascal không phải là để bạn có thể tạo ra được chương trình gì hay ho mà là để tập làm quen với cách suy nghĩ như programmer , làm quen với các thuật ngữ như branching, looping, function, procedure , statement etc...

2) Java - Ngôn ngữ được ưa chuộng dạy tại các trường đại học hiện nay . Java là ngôn ngữ hiện đại chuyên lập trình hướng đối tượng (Object - Oriented Programming) - hàng hot hiên nay ( PHP 5.0 cũng vừa tích hợp những chức năng OOP mới ) . Nếu bạn chưa học pascal thì Java cũng có thể hỗ trợ lập trình cấp trúc . Java còn có 1 thư viện khổng lồ các function nhằm rút ngắn thời gian coding. Nếu bạn thích học mình có thể send cho giáo trình cơ bản mà mình vừa mới học xong ( tiếc là = tiếng anh nhưng khá dễ hiểu - do illigal nên mình không public lên đây được sry mọi người )

Chúc vui !
 
Go to Page:  First Page Page 4 5 6 7

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