Luciano Arango: OK, guys. Tên tôi là Luciano Arango. Tôi là một sinh viên năm hai trong Adams House. Và chúng ta sẽ nói về an ninh quốc phòng hoạt động web. Vì vậy, tôi làm việc cho Văn phòng Thông tin An ninh trong vùng biển. Và trong mùa hè, tôi thực tập tại SeguraTec, đó là một thông tin công ty bảo mật phục vụ cho Ngân hàng của Columbia. Đó chủ yếu là nơi tôi đã học những gì tôi đã học được cho đến nay. Và vì vậy một số các tài liệu mà chúng tôi sẽ đi qua ngày hôm nay, chúng tôi có không thực sự nói chuyện trong lớp. Nhưng chúng tôi sẽ sớm. Nó sẽ là như SQL, JavaScript. Và chúng tôi đã không thực sự đi qua nó. Vì vậy, tôi có thể sắp xếp các chuyến bay qua nó, và bạn có thể không biết một số điều. Nhưng ngay sau đó, bạn sẽ tìm hiểu nó. Và tất cả nó sẽ có ý nghĩa. Ngoài ra điều khác - ở đạo đức. Một số trong những điều mà bạn học, bạn có thể sử dụng theo những cách không đạo đức. Nếu nó là của bạn, chắc chắn cố gắng. Tôi chắc chắn thúc đẩy các bạn thử máy chủ của riêng bạn, hãy thử đi bên trong chúng. Xem bạn có thể thâm nhập vào chúng, nếu bạn có thể nhận được bên trong chúng. Nhưng không bất cứ ai khác. Cảnh sát không thực sự thích những câu nói đùa và Nhìn chung, chúng tôi đặt này ở đây. Chúng tôi đã rối tung xung quanh. Họ nhận được thực sự tức giận. Vì vậy, đi qua trang web này. Tôi có nó mở ra ngay tại đây. Đây là một trang web, và nó có một loạt các ví dụ. Những gì xảy ra là ví dụ đầu tiên là loại sẽ được dễ dàng hơn rất nhiều so với ví dụ cuối cùng trong một ý nghĩa mà ví dụ đầu tiên là hoàn toàn không an toàn. Và cuối cùng là loại gì một bình thường người bảo mật web sẽ làm gì. Nhưng bạn vẫn có thể loại của được xung quanh đó. Và chúng ta sẽ tập trung vào một và hai, ví dụ một và hai. OK. Hãy bắt đầu với cross-site scripting. JavaScript chạy trên trình duyệt của khách hàng. Đó là một ngôn ngữ lập trình mà bạn sử dụng để chạy trên trình duyệt của khách hàng để bạn không cần phải cập nhật các trang web và đi lại cho máy chủ. Bạn chạy nó. Ví dụ, Facebook, bạn không có để tải lại trang web cho trạng thái mới cập nhật để đi lên. Đó là sử dụng JavaScript để tạo ra tất cả những điều này. Vì vậy, chúng ta có thể tiêm JavaScript độc hại vào các trang web. Và theo cách đó, khi chúng tôi gửi một liên kết đến một người nào đó, chúng tôi loại có thể gửi nó với một số mã mà chúng tôi muốn. Có liên tục và không liên tục JavaScript - liên tục và không liên tục cross-site kịch bản, tôi có ý nghĩa. Và sự khác biệt là dai dẳng là JavaScript sẽ được lưu trên trang web. Và không liên tục sẽ JavaScript mà thực sự sẽ chỉ xảy ra một lần. Vì vậy, chúng ta hãy xem một ví dụ thực sự nhanh chóng. OK. Vì vậy, trang web này, đơn giản, không có gì xảy ra ở đây. Và chúng ta sẽ cố gắng chèn một số mã JavaScript. Vì vậy, cách chúng tôi bắt đầu viết JavaScript là chúng tôi bắt đầu với kịch bản bắt đầu. Và chúng tôi đóng nó với kịch bản. Chúng tôi chỉ đơn giản là sẽ đưa một tin nhắn - Tôi sẽ chỉ cho bạn - cảnh báo. Cảnh báo là một chức năng JavaScript sử dụng để hiển thị một cái gì đó. Vì vậy, hãy thử nó thực sự nhanh chóng. Tôi sẽ đi, xin chào cảnh báo. Vâng, tôi quên đặt - OK. Vì vậy, đó là đơn giản. Chúng tôi đặt JavaScript trên một trang web, và nó đến. Và loại chỉ xảy ra trên trang web của chúng tôi, phải không? Vì vậy, nó có vẻ như nó không một vấn đề, phải không? Ý tôi là, làm thế nào bạn có thể sử dụng này độc hại? Vì vậy, cách mà tin tặc làm điều này thực sự đơn giản. Họ sẽ lấy nó. Họ có thể gửi link này cho bạn. Nếu tôi sẽ gửi link này cho bạn ngay bây giờ, và bạn mở nó lên, nó sẽ nói, xin chào, nói rằng trang web của tôi là nói cho bạn chào. Và do đó, nếu tôi nói một cái gì đó chút thông minh hơn, nếu tôi kéo lên một Chức năng JavaScript tôi loại của đã viết - nhưng nếu bạn nhìn vào nó, tôi sẽ đi quá mức nó trước khi tôi đã viết nó. Vì vậy, chúng ta sẽ thiết lập một thời gian chờ. Chúng ta sẽ chờ đợi một vài giây. Trong thực tế, chúng ta sẽ chờ đợi, nếu Tôi không nhầm, năm giây. Điều này đi bằng mili giây. Và sau đó những gì chúng ta sẽ làm chúng ta là sẽ cảnh báo rằng đăng nhập timed out để đăng nhập lại in Và chúng ta sẽ thay đổi vị trí đến một vị trí khác nhau. Vì vậy, nếu tôi gửi trang web này cho một người nào đó, họ sẽ được Đang xem xung quanh, bình tĩnh. Không có gì đang xảy ra. Và trong năm giây, nó sẽ nói, đăng nhập của bạn quá hạn. Xin vui lòng đăng nhập lại in Một khi họ click OK, tôi sẽ đưa họ đến một trang web khác. Có lẽ, các trang web sẽ tương tự như các trang web mà họ ở trước. Và họ sẽ đăng nhập của họ thông tin vào trang web của tôi thay vì trang web của họ. Và vì vậy tôi có thể gửi một người email với các liên kết này. Tôi nói, ồ, đây là một liên kết. Đây là một ngân hàng, ví dụ. Tôi nói, ở đây, đi vào liên kết này. Và một khi họ gửi, họ sẽ được duyệt web trên. Tôi có thể chờ 15 giây, 20 giây, và sau đó bật đó xin vui lòng đăng nhập lại đăng nhập lại vào. Các bạn có thể thử nó với rất nhiều điều. Nó phức tạp bởi vì các bạn chưa thấy JavaScript, do đó bạn có thể không biết một số chức năng. Nhưng tất cả các bạn phải làm là bắt đầu với kịch bản, kết thúc với kịch bản. Và bạn có thể đặt bất cứ điều gì ở giữa. Cảnh báo là một chức năng, chờ đợi. Vị trí cửa sổ sẽ đưa bạn đến một vị trí mới. Nhưng bạn có thể làm nhiều hơn nữa. Và do đó, ý tưởng là chúng ta chấp nhận đi. Nếu tôi đi đến ví dụ hai, và tôi đặt trong cùng một mã này, nó không đi làm việc. Vì vậy, nó in tất cả mọi thứ vì những gì trang web này ban đầu không được nếu tôi đặt bất cứ điều gì ở đây, nó sẽ in ra ngay tại đây. Vì vậy, nó không in bất cứ điều gì ra ngoài. Ví dụ này là thực sự kiểm tra để xem nếu kịch bản là ở đó. Vì vậy, yeah, đi trước. Hỏi tôi. ĐỐI TƯỢNG: Không phải là gửi một nhận hoặc gửi yêu cầu? Luciano Arango: Vâng. họ gửi một yêu cầu có được. ĐỐI TƯỢNG: Đây là? Luciano Arango: Vâng. Ngoài ra trình duyệt sử dụng bài yêu cầu. Nhưng tôi đang cố gắng để hiển thị yêu cầu get để chúng ta có thể thấy là những gì thực sự xảy ra. Và do đó, nếu chúng ta nhìn vào mã này - do đó, nó không làm việc nữa. Và nếu chúng ta hãy nhìn vào mã này, nó sẽ là trong ví dụ hai. Những gì người này đang làm, người phụ trách của trình duyệt này - mở ra, OK - được thay thế kịch bản từ. Đây là PHP, mà các bạn might đã thấy một chút nào. Anh chỉ cần thay thế kịch bản từ tên. Vì vậy, tuy nhiên, nếu tôi đi trước và chỉ cần đặt trong - nếu tôi lấy mã của tôi một lần nữa, và tôi sẽ để sửa đổi nó một chút. Thay vì kịch bản, tôi sẽ thay đổi nó cho kịch bản với một R. vốn và chúng ta sẽ xem mã này làm việc. Vì vậy, nó không in ra, đó là một dấu hiệu tốt. Và hy vọng trong hai giây nữa, nó sẽ bật lên. Đăng nhập của bạn quá hạn. OK. Không sao cả. Vì vậy, việc kiểm tra các kịch bản might không nhất thiết phải làm việc. Người - nó cũng có thể kiểm tra các kịch bản chữ hoa, kịch bản chữ thường, trường hợp str so sánh, chắc chắn rằng họ đang như nhau. Nhưng các hacker vẫn có thể làm loại gì chúng tôi đã làm trong Vigenere khi chúng tôi chuyển trở lại một vài ký tự, di chuyển về phía trước. Và nó có thể tìm ra cách để đưa kịch bản trở lại trong đó để nó có thể tiêm rằng kịch bản. Vì vậy, những gì bạn muốn sử dụng là htmlspecialchars để bảo vệ trang web của bạn. Và điều này không là nó làm cho chắc chắn rằng những gì bạn đưa vào - ví dụ, trích dẫn hay này lớn hơn hoặc ít hơn - được thay thế bằng một cái gì đó đó sẽ không được - hãy để tôi phóng to ở đây - dấu và thực tế. Nó sẽ thay thế những người đặc biệt HTML nhân vật mà chúng ta sẽ thấy khi chúng ta nói về - oh, điều này sẽ đưa tôi trở lại - những nhân vật này ngay tại đây. Những biểu hiện một cái gì đó đang đến. Cho HTML, mà khung bắt đầu cho chúng ta biết một cái gì đó HTML liên quan đang đến. Và chúng tôi muốn được thoát khỏi điều đó. Chúng tôi không muốn đưa HTML vào một website.k Chúng tôi không muốn người sử dụng có có thể đặt một cái gì đó trong trang web của họ có thể ảnh hưởng đến trang web của họ, như kịch bản hay HTML hoặc một cái gì đó như thế. Điều quan trọng là bạn vệ sinh đầu vào người sử dụng. Vì vậy, người sử dụng có thể nhập vào nhiều điều. Anh ta có thể nhập vào một loạt các công cụ thử để lừa trình duyệt của bạn vào vẫn chạy mã kịch bản này. Những gì bạn muốn làm là không chỉ nhìn cho kịch bản, nhưng tìm kiếm tất cả mọi thứ đó có thể là độc hại. Và htmlspecialchars sẽ làm điều đó cho bạn, do đó bạn không có lo lắng về nó. Nhưng không cố gắng để làm một mình loại với mã số riêng của bạn. Là tất cả mọi người rõ ràng về XSS? OK. Chúng ta hãy đi đến SQL injection. Vì vậy, SQL injection có lẽ là số một lỗ hổng trong các trang web khác nhau. Ý tôi là, một ví dụ tốt - Tôi chỉ nghiên cứu xa cho điều này. Và tôi thấy bài viết này tuyệt vời, nơi Tôi thấy rằng Harvard đã vi phạm, đã bị hack. Và tôi đã tự hỏi, tốt, làm thế nào họ sẽ làm điều đó? Harvard là tuyệt vời nhất, hầu hết đảm bảo trường đại học bao giờ hết. Phải không? Vâng, để vi phạm các máy chủ, các tin tặc sử dụng một kỹ thuật gọi là SQL injection. Vì vậy, điều này xảy ra vào một ngày để cơ sở ngày. Người quên mất tài khoản cho SQL injection. Harvard không. Tôi nghĩ rằng nó nói ở đây, Princeton, Stanford, Cornell. Vì vậy, làm thế nào để chúng ta - vì vậy SQL đây là những gì tiêm được mang tất cả những người xuống? OK. Vì vậy, SQL là một ngôn ngữ lập trình chúng tôi sử dụng để truy cập vào cơ sở dữ liệu. Những gì chúng tôi làm là chúng ta chọn - vì vậy những gì đọc này ngay bây giờ là chọn tất cả mọi thứ từ bảng. SQL, nó thay đổi vào các cơ sở dữ liệu có bảng đầy đủ thông tin. Vì vậy, chọn tất cả mọi thứ từ người sử dụng nơi tên là tên người dùng. Phải không? Đơn giản. Ý tưởng của SQL injection là chúng ta chèn một số mã độc hại mà có thể lừa máy chủ vào một cái gì đó chạy khác với những gì nó ban đầu đã được chạy. Vì vậy, hãy nói cho Tên truy nhập, chúng tôi đặt trong hoặc 1 bằng 1. Vì vậy, chúng tôi đặt trong hoặc 1 bằng 1. Cách nó sẽ đọc bây giờ sẽ được chọn từ người sử dụng, tất cả mọi thứ từ người sử dụng - đây là tất cả mọi thứ - nơi tên là tên người dùng, nhưng tên tài khoản hoặc 1 bằng 1. Vì vậy, tên là gì hoặc 1 bằng 1. 1 bằng 1 luôn luôn đúng. Vì vậy, điều này sẽ luôn luôn trở lại thông tin từ người sử dụng. OK. Chúng tôi không cần phải có Tên truy nhập chính xác. Chúng tôi chỉ có thể có bất cứ điều gì mà chúng ta muốn, và nó sẽ trở lại thông tin mà chúng ta cần. Hãy xem xét một ví dụ khác. Nếu chúng ta đã chọn tất cả mọi thứ từ người sử dụng, nơi tên là thả người sử dụng TABLE - vì vậy những gì bạn có nghĩ rằng điều này sẽ làm gì nếu tôi đặt vào tên người dùng như người dùng DROP TABLE? Bất cứ ai cũng có một ý tưởng? Vâng. ĐỐI TƯỢNG: Nó sẽ nói nó để đổ tất cả các bảng. Luciano Arango: Nó sẽ nói cho chúng tôi để đổ tất cả mọi thứ trong trang web, tất cả mọi thứ trong cơ sở dữ liệu. Và những gì người sử dụng này cho - vì vậy Tôi sẽ cho các bạn thấy. Tôi bị vô hiệu hóa giảm các bảng bởi vì tôi không muốn bạn chàng trai để thả các bảng của tôi. Chúng ta hãy xem này. Vì vậy, đây chỉ đơn giản là kéo lên thông tin cho một người nào đó. Vì vậy, làm thế nào để chúng tôi biết nếu điều này là bị ảnh hưởng bởi SQL injection. Chúng tôi sẽ kiểm tra thật nhanh nếu chúng ta có thể đặt một cái gì đó - hãy để tôi sao chép mã này. Tôi sẽ đi qua nó trong một giây. Tôi sẽ đặt gốc và 1 bằng 1. Này ngay tại đây, điều này phần trăm dấu 23 - những gì nó thực sự là, nếu tôi nhìn bên phải ở đây tại - cách HTML có trong con số, nếu bạn hãy nhìn vào khi tôi đặt trong một không gian ở đây - nếu tôi được không gian một cái gì đó ở đây, nó thay đổi nó vào một phần trăm 2. Các anh thấy điều này ngay tại đây khi tôi đặt trong một không gian? Cách nó hoạt động là bạn chỉ có thể gửi các giá trị ASCII thông qua HTML. Vì vậy, nó thay thế, ví dụ, một không gian với phần trăm 20. Tôi không biết nếu các bạn đã thấy rằng trước. Nó thay thế một hashtag với phần trăm 23. Chúng ta cần một hashtag vào cuối hoặc báo cáo để chúng tôi có thể nói cho cơ sở dữ liệu để quên nhận xét ra dấu chấm phẩy cuối cùng ở cuối. Chúng tôi muốn nó không nghĩ về điều đó. Chúng tôi chỉ muốn nó chạy tất cả mọi thứ mà chúng ta có trước và nhận xét rằng ra. Chúng ta hãy nhìn vào nó. Vì vậy, nếu tôi đã đặt một cái gì đó sai - chúng ta hãy nói ví dụ, tôi đặt 2 bình đẳng 1, nó không cho tôi bất cứ điều gì. Khi tôi đặt trong 1 bằng 1, và nó trả lại một cái gì đó, điều này nói với tôi rằng này là dễ bị tổn thương một SQL injection. Tôi biết bây giờ mà bất cứ điều gì Tôi đặt sau này - và ví dụ, thả các bảng hay như thế chắc chắn sẽ làm việc. Tôi biết đó là dễ bị SQL injection bởi vì tôi biết rằng bên dưới mui xe, nó cho phép tôi làm 1 bằng 1 điều. OK? Và nếu chúng ta nhìn vào những người khác, số hai và số ba, đó là sẽ làm nhiều hơn một chút kiểm tra bên dưới mui xe của nó là gì. Vì vậy, bất cứ ai cho phép thả bất cứ điều gì chưa hay cố gắng? Các anh loại được SQL chưa? Bởi vì tôi biết các bạn có không thấy được chưa, vì vậy nó loại gây nhầm lẫn cho các bạn. Chúng ta hãy có một cái nhìn. Vì vậy, cách để ngăn chặn SQLI là gì? OK. Vì vậy, điều này thực sự quan trọng bởi vì bạn kẻ chắc chắn muốn ngăn chặn này trong trang web của bạn. Nếu không, tất cả bạn bè của bạn sẽ làm cho niềm vui của bạn khi họ thả tất cả bảng của bạn. Vì vậy, ý tưởng là bạn sửa chữa SQL một cách nào đó, trong khi bạn kết hợp những gì các yếu tố đầu vào người dùng với một chuỗi nhất định. Vì vậy, cách làm việc này là bạn chuẩn bị cơ sở dữ liệu. Bạn chọn tên, màu sắc, và năng lượng từ một cơ sở dữ liệu được gọi là trái cây. Và sau đó, nơi calo ít hơn, và chúng tôi đặt một dấu hỏi có nói rằng chúng tôi đang đi để đầu vào một cái gì đó trong một giây. Và màu sắc bằng, và chúng tôi đặt một câu hỏi đánh dấu nói rằng chúng ta sẽ đầu vào một cái gì đó trong một giây là tốt. OK? Và sau đó chúng tôi thực hiện nó, đặt trong 150 và đỏ. Và điều này sẽ kiểm tra để chắc chắc chắn rằng hai - mảng này sẽ kiểm tra xem các hai là một số nguyên và rằng đây là một chuỗi. Sau đó chúng tôi đi, và chúng tôi lấy tất cả, chúng tôi đặt nó trong màu đỏ. Điều đó có nghĩa chúng ta lấy tất cả. Nó có nghĩa là chúng tôi thực sự thực hiện SQL báo cáo và đặt nó trở lại trong màu đỏ. Ở đây chúng tôi làm như vậy, nhưng chúng tôi làm tương tự cho màu vàng. Và chúng tôi lấy tất cả. Và bằng cách này, chúng ta ngăn chặn người sử dụng từ việc có thể đầu vào một cái gì đó đó không phải là những gì chúng tôi được chỉ định, một chuỗi hoặc một số nguyên, ví dụ. Tôi đã nói chuyện trước về dựa vào người khác. Khi các bạn bắt đầu dự án của bạn, bạn nhất chắc chắn sẽ sử dụng bootstrap hoặc một cái gì đó tương tự. Các bạn đã từng sử dụng Wordpress? Có lẽ các bạn đã sử dụng Wordpress có khả năng nhất. Vì vậy, các vấn đề với việc sử dụng thứ của người khác - Tôi chỉ cần đi để Google nhanh chóng thực Dễ bị tổn thương wordpress. Nếu tôi kéo lên này ngay bây giờ - Tôi nghĩa là đã làm một hai thứ hai của Google. Chúng ta có thể thấy rằng Wordpress - này là ngày tháng chín '12. 26 được cập nhật. Cấu hình mặc định của Wordpress trước 3.6 không ngăn cản các một số cập nhật, trong đó sức mạnh làm cho nó dễ dàng hơn cho các cuộc tấn công cross-site scripting. Vì vậy, một câu chuyện nhanh chóng, một khi chúng tôi đã làm việc - vì vậy tôi đã, vào mùa hè, làm việc một thực tập. Và chúng tôi đã làm việc với các loại như một công ty thẻ tín dụng lớn. Và họ dựa vào một cái gì đó gọi là - Tôi không biết nếu bạn đã bao giờ chơi với một sản phẩm được gọi là Joomla. Joomla là một sản phẩm được sử dụng để kiểm soát - loại tương tự Wordpress, được sử dụng để xây dựng trang web. Vì vậy, họ đã có trang web của họ làm việc trên Joomla. Đây thực sự là một thẻ tín dụng công ty ở Colombia. Tôi sẽ đưa bạn đến của họ trang web thực sự nhanh chóng. Vì vậy, họ đã sử dụng Joomla. Và họ đã không được cập nhật Joomla để bổ sung mới nhất. Và như vậy khi chúng tôi đang xem xét đến mã của họ, chúng tôi có thể thực sự đi vào bên trong mã của họ và ăn cắp tất cả các thông tin thẻ tín dụng mà họ đã có, tất cả các số thẻ tín dụng, tên, địa chỉ. Và điều này đã được chỉ là - và mã của họ là hoàn toàn tốt đẹp. Họ đã có mã lớn. Đó là tất cả an ninh. Họ đã kiểm tra tất cả các cơ sở dữ liệu. Họ đảm bảo cross-site kịch bản là tốt. Nhưng họ đã sử dụng một cái gì đó mà không cập nhật, đó không phải là an toàn. Và do đó dẫn họ tới - vì vậy các bạn chắc chắn sẽ sử dụng khác mã, khuôn khổ của người khác của người dân để xây dựng trang web của bạn. Hãy chắc chắn rằng họ đang an toàn vì đôi khi nó không phải là bạn, một trong đó làm cho một sai lầm. Nhưng người khác làm cho một sai lầm, và sau đó bạn rơi xuống vì điều đó. Mật khẩu và PII. Vì vậy, mật khẩu. OK. Chúng ta hãy nhìn vào mật khẩu thực sự nhanh chóng. OK. Xin vui lòng cho tôi biết rằng tất cả mọi người sử dụng an toàn - Tôi hy vọng tất cả mọi người ở đây sử dụng mật khẩu an toàn. Tôi chỉ để cho rằng trong như một giả định. Vì vậy, các bạn chắc chắn sẽ lưu trữ mật khẩu cho các trang web của bạn. Bạn sẽ làm một cái gì đó như đăng nhập hoặc một cái gì đó như thế. Điều quan trọng là để không lưu trữ mật khẩu trong văn bản gốc. Này là cực kỳ quan trọng. Bạn không muốn để lưu trữ một mật khẩu trong văn bản gốc. Và bạn chắc chắn không thực sự muốn để lưu trữ nó trong một cách băm. Vì vậy, một cách băm là những gì khi bạn tạo ra một từ, khi bạn đặt này từ thành một hàm băm, nó sẽ tạo ra trở lại một số loại khó hiểu tin nhắn hoặc tập hợp khó hiểu của các phím. Tôi sẽ chỉ cho bạn một ví dụ. Tôi sẽ băm họ password1 từ. Hash để md5 sẽ trả lại cho tôi một số loại thông tin kỳ lạ. Vấn đề là người dân ra có mà muốn đi vào các trang web có đã tìm ra loại của tất cả các hash md5. Những gì họ đã được họ ngồi xuống trên họ máy vi tính, và họ băm mỗi từ có thể duy nhất ra khỏi đó cho đến khi họ có loại này là gì. Nếu tôi được nhìn này lên - Tôi chỉ nắm lấy băm này. Nếu tôi nhận được băm này từ - nếu tôi đi vào một trang web, và tôi thấy băm này bởi vì tôi có được các cơ sở dữ liệu, và tôi nhìn nó, một người nào đó đã tìm ra cho tôi. Yeah. Vì vậy, mọi người ngồi xuống, và bất cứ điều gì md5 băm mà bạn đưa vào, họ sẽ trả lại cho bạn một cái gì đó đó là một từ. Nếu tôi băm một từ khác, như - Tôi không biết - trees2. Tôi không muốn phải thất vọng bằng cách tìm kiếm Google của tôi. Có nó, trees2. Vì vậy, rất nhiều trang web vẫn còn sử dụng md5 băm. Họ nói, oh, đó là an toàn. Chúng tôi không lưu trữ trong văn bản gốc. Chúng ta có băm md5 này. Và tất cả tôi phải làm là chỉ cần Google số. Tôi thậm chí không phải tính toán bản thân mình. Tôi chỉ có thể Google nó, và ai đó đã làm nó cho tôi. Dưới đây là một bó của họ. Dưới đây là một loạt các mật khẩu. Vì vậy, chắc chắn không sử dụng md5 băm, bởi vì tất cả các bạn phải làm là Google nó. Vì vậy, những gì bạn muốn sử dụng để thay thế? OK. Một cái gì đó gọi là muối. Vì vậy, những gì là muối - Các anh nhớ khi chúng tôi nói về ngẫu nhiên trong - Tôi không chắc chắn những gì pset nó là - được nó pset có hay bốn? Chúng tôi đã nói về việc tìm kiếm kim trong Haystack. Và trong pset, nó nói rằng bạn có thể thực sự tìm ra những gì ngẫu nhiên tạo ra bởi vì ai đó đã chạy ngẫu nhiên một triệu lần và chỉ loại hình thành những gì họ tạo ra. Những gì bạn muốn làm là đưa vào một đầu vào. Vì vậy, đó là những gì muối là loại. Họ đã tìm ra những gì muối trả cho từng công trình. Vì vậy, những gì muối, không có gì bạn đặt trong một muối. Bạn đặt trong một từ nhất định. Và nó sẽ băm từ đó tùy thuộc vào những gì bạn đưa vào đây. Vì vậy, nếu tôi băm một mật khẩu với điều này câu, nó sẽ băm khác nhau nếu tôi băm password1 với một câu khác nhau. Nó loại cung cấp cho nó một nơi nào đó để bắt đầu cho băm để bắt đầu. Vì vậy, nó là rất nhiều khó khăn hơn để tính toán, nhưng bạn vẫn có thể tính toán nó, đặc biệt là nếu bạn sử dụng một muối xấu. Người đã cũng đã tìm ra muối thông thường và tìm ra những gì mà nó được. Muối ngẫu nhiên là tốt hơn nhiều, nhưng cách tốt nhất là sử dụng một cái gì đó gọi là hầm mộ. Và những gì crypt cho phép bạn làm - vì vậy các chức năng này đã được xây dựng cho bạn. Nhiều người quên rằng, hoặc họ quên sử dụng nó. Nhưng nếu tôi nhìn lên crypt PHP, crypt đã trả về một chuỗi băm cho tôi. Và nó thực sự muối nhiều lần và băm nó nhiều lần. Vì vậy, chúng tôi không cần phải làm điều này. Vì vậy, tất cả các bạn phải làm là gửi nó vào hầm mộ. Và nó sẽ tạo ra một hash tuyệt vời mà không bạn phải lo lắng về muối hoặc bất cứ điều gì. Bởi vì nếu bạn đã muối nó, bạn có nhớ những gì bạn đã sử dụng muối bởi vì nếu không, bạn không thể có được của bạn mật khẩu trở lại mà không có sự muối mà bạn sử dụng. OK. Và cũng nhận dạng cá nhân thông tin. Vì vậy, an ninh xã hội, thẻ tín dụng - đó là khá rõ ràng. Nhưng đôi khi người ta quên đi cách nó công trình là, làm thế nào nhiều thông tin làm bạn thực sự cần phải tìm thấy một số người? Ai đó đã làm một nghiên cứu về này một cách trở lại. Và nó là như thế, nếu bạn có một tên đầy đủ, bạn không thể tìm thấy một ai đó mà dễ dàng. Nhưng những gì nếu bạn có một tên đầy đủ và ngày sinh của họ? Là đủ để xác định một người nào đó đặc biệt? Những gì nếu bạn có tên của họ và địa chỉ đường phố mà họ sống bằng gì? Là đủ để tìm thấy một người nào đó? Và đó là khi họ đặt câu hỏi, là những gì thông tin nhận dạng cá nhân, và những gì bạn nên lo lắng về không cho đi? Nếu bạn cho đi nhận dạng cá nhân thông tin mà một người nào đó cung cấp cho bạn, bạn có khả năng có thể bị kiện. Và chúng tôi chắc chắn không muốn điều đó. Vì vậy, khi bạn đang đặt trang web của bạn ra, và bạn có một thực sự mát mẻ thiết kế, hy vọng bạn đã thực hiện một dự án cuối cùng tuyệt vời. Bất kỳ bạn loại muốn đặt nó ra khỏi đó. Bạn muốn chắc chắn rằng bất cứ điều gì bạn đang dùng từ người sử dụng, nếu nó thông tin nhận dạng cá nhân, bạn muốn chắc chắn rằng bạn đang thực sự là cẩn thận với nó. Vỏ tiêm. OK. Vỏ tiêm cho phép kẻ xâm nhập để được tiếp cận với dòng lệnh thực tế của bạn trong máy chủ của bạn. Và vì vậy ông có thể chạy mã mà bạn không thể kiểm soát. Hãy lấy một ví dụ về điều này chuỗi đẹp ngay tại đây. Nếu chúng ta đi vào các trang web một lần nữa, tôi sẽ đi vào tiêm mã. Vì vậy, điều này không là - đó cũng là điều chúng tôi nhìn vào trước. Chúng tôi đang cho phép người sử dụng đưa vào bất cứ điều gì anh ta muốn, và nó sẽ in ra bất cứ điều gì bạn muốn. Vì vậy, tôi sẽ đặt một cuộc gọi. Điều mà không được - nó sẽ bắt đầu bằng cách ghép. Vì vậy, nó sẽ cho phép tôi chạy bất cứ điều gì lệnh chạy của người trước và chỉ huy của tôi. Và tôi chạy một lệnh hệ thống. Và những chuỗi cuối cùng là - nhớ những gì tôi đã nói chuyện với các bạn về, còn bạn cần phải mã hóa nó trong một phương pháp URL. Nếu tôi chạy này ngay bây giờ - Tôi sẽ cho bạn ở đây - bạn sẽ thấy rằng tôi đã kết thúc lên chạy một lệnh. Đây thực sự là máy chủ thực sự rằng trang web của tôi đang chạy trên. Vì vậy, chúng tôi không muốn điều đó, bởi vì tôi có thể chạy - máy chủ này không phải của tôi. Vì vậy, tôi không muốn mess up của mình chị em, máy chủ của Marcus. Nhưng bạn có thể chạy lệnh hơn đó là nguy hiểm. Và có khả năng, bạn có thể xóa Bức ảnh, loại bỏ các thư mục. Tôi có thể loại bỏ một thư mục nhất định nếu Tôi muốn, nhưng tôi không muốn để làm điều đó với Marcus. Anh ấy là một chàng trai tốt. Ông cho tôi mượn máy chủ của mình. Vì vậy tôi sẽ để cho anh ta tắt trên tốt nhất. Vì vậy, những gì chúng tôi không muốn sử dụng - chúng tôi không muốn sử dụng eval hoặc hệ thống. Eval hoặc hệ thống cho phép chúng ta làm cho các cuộc gọi hệ thống. Phương tiện eval đánh giá. Hệ thống có nghĩa là những gì tôi chạy. Nó chạy một cái gì đó trong hệ thống. Nhưng chúng ta có thể cấm những việc này trong PHP để chúng ta không sử dụng chúng. Và tập tin tải lên. Tôi đã đi để làm một tuyệt vời điều với các tập tin tải lên. Nhưng như tôi đã nói với các bạn, tập tin của tôi tải lên điều không làm việc. Nếu tôi được tải lên một tập tin ngay bây giờ - nếu tôi được tải lên một tập tin, và đó là một hình ảnh - bạn có một điều tải lên đó là một bức tranh. Đó là tốt. Không có gì xảy ra. Nhưng nếu bạn có một tập tin tải lên, cho ví dụ, và người sử dụng thực sự cập nhật một tập tin PHP hoặc một tập tin exe hoặc một cái gì đó như thế, sau đó bạn có thể có khả năng có một vấn đề. Điều này đã làm việc trước. Thật không may cho tôi, đó là không làm việc nữa. Nếu tôi, ví dụ, tải lên tập tin này, tôi không nhận được sự cho phép để tải lên các tập tin do máy chủ không phải là tôi. Vì vậy, các chàng trai thực sự thông minh. Vì vậy, chúng tôi không muốn - Tôi sẽ cho các bạn thấy - OK, đây là một số công cụ thực sự mát mẻ. Vì vậy, các - đi vào - nếu các bạn có Firefox - hy vọng bạn làm. Có hai tiện ích gọi là SQL Tiêm Tôi và Cross-Site Script nhớ. Họ mở ra ít phụ thanh bên cạnh. Và nếu tôi đã đi đến CS60 ví dụ - vì vậy những gì nó làm là nó trông cho tất cả các hình thức đó - hy vọng, tôi sẽ không nhận được gặp rắc rối cho việc này. Nhưng OK. Đây là hệ thống pin. Vì vậy, khi tôi bắt đầu tìm kiếm các lỗ hổng trong hệ thống, điều đầu tiên tôi làm là mở nhỏ xinh đẹp này công cụ ở bên cạnh. Và tôi sẽ thử nghiệm hình thức với các cuộc tấn công tự động. Và vì vậy điều này không là sẽ từ từ mở ra một loạt các trình duyệt. Dưới đây là một loạt các trình duyệt. Và nó đang cố gắng mọi sự kết hợp duy nhất của cross-site scripting rằng có thể là, nếu bạn nhìn thấy trên mặt. Và nó sẽ cho tôi một kết quả loại câu trả lời là. Tất cả vượt qua. Rõ ràng, tất cả họ đều vượt qua. Ý tôi là, họ thực sự thông minh người ở đó. Nhưng nếu tôi đã chạy - Tôi đã có lần trước khi tôi chạy các dự án cuối cùng của học sinh. Tôi chỉ cần chạy SQL Tiêm nhớ với tất cả các cuộc tấn công khác nhau. Và nó đang cố gắng để tiêm SQL máy chủ pin này. Vì vậy, nếu chúng ta di chuyển xuống, cho Ví dụ, nó nói - điều này là tốt nếu nó trở về. Vì vậy, nó được thử nghiệm một số giá trị nhất định. Và máy chủ trở lại một mã là tiêu cực. Loại bỏ tạm thời. Điều này là tốt. Nó sẽ cố gắng tất cả các xét nghiệm này. Vì vậy, bạn chỉ có thể chạy - Tôi ước gì có thể tìm thấy một trang web thực sự nhanh chóng mà có thể cho tôi - có lẽ các cửa hàng CS50. Wow, điều này sẽ có cách quá dài. Tôi sẽ cho thử nghiệm đầu tiên không hoàn thành đúng. Vì vậy, nó phàn nàn. Vì vậy, đây là ba điều. Những công cụ này là miễn phí. Bạn có thể tải về và chạy chúng trên trang web của bạn, và nó sẽ cho bạn biết nếu bạn có cross-site scripting, nếu bạn có SQL, nếu bạn có một cái gì đó tương tự. Tôi loại rối tung lên. Điều quan trọng - OK, vì vậy không bao giờ tin tưởng vào người sử dụng. Bất cứ điều gì các đầu vào sử dụng cho bạn, làm cho chắc chắn bạn vệ sinh nó, bạn làm sạch nó, bạn kiểm tra những điều đúng đắn, mà nó đem lại cho bạn những gì bạn muốn anh ta để cung cấp cho bạn. Luôn luôn được cập nhật về những gì các khuôn khổ rằng bạn đang thực sự sử dụng. Nếu bạn sử dụng một cái gì đó như bootstrap - Tôi biết các bạn đang sử dụng bootstrap vì anh ấy sẽ đi trên này ngay trong lớp học - và Wordpress hay như thế, thông thường điều này có thể bị tấn công. Và sau đó bạn thậm chí không biết. Bạn chỉ cần chạy trang web của bạn. Và nó hoàn toàn an toàn. Và bạn đi xuống. Vì vậy, tôi thực sự đánh bắt cá đầu. Nhưng tôi muốn cảm ơn Pentest Labs. Tôi sẽ cho các bạn thấy một cái gì đó gọi là Pentest Labs. Nếu các bạn thực sự quan tâm những gì an ninh thực sự là, có một trang web được gọi Pentest Labs nếu các bạn hãy đến đó ngay bây giờ. Ồ, đó không phải là nó. Tôi chỉ cần đi để chạy nó như thế này. Google nói với tôi câu trả lời. OK. Và nó dạy cho bạn sử dụng - vì vậy nó nói, tìm hiểu thâm nhập web kiểm tra đúng cách. Nó dạy cho bạn - hy vọng, bạn là một người đạo đức. Nhưng nó dạy bạn làm thế nào bạn có thể nhìn vào làm thế nào bạn có thể nhận được trong trang web. Và nếu bạn tìm hiểu làm thế nào bạn có thể nhận được bên trong các trang web, bạn có thể tìm hiểu làm thế nào để bảo vệ mình khỏi bị các trang web bên trong. Hãy để tôi phóng to bởi vì có lẽ các bạn không nhìn vào quyền này. Từ SQL injection trình bao, vì vậy loại làm thế nào tôi có thể nhận được từ SQL tiêm trình bao. Và bạn tải về máy ảo này. Và các máy ảo đã được đi kèm với các trang web mà bạn sẽ thử nó trên. Bạn tải về file PDF. Và nó sẽ cho bạn những gì từng dòng bạn phải làm, những gì bạn kiểm tra. Đây là những gì một kẻ tấn công thực sự không để vào bên trong một trang web. Và một số công cụ này là phức tạp. Tôi ước mình có thể đi qua hơn điều với các bạn. Nhưng tôi lo lắng rằng các bạn chưa thực sự - đây là những gì tôi đã đi qua với các bạn, kiểm tra web cho thử nghiệm thâm nhập. Không thực sự biết những gì SQL và những gì - Hội thảo Carl Jackson là tuyệt vời là tốt. Các bạn không biết loại của việc này là gì. Nhưng nếu bạn vào trang web này, và bạn tải về các hướng dẫn và các Các file PDF, bạn có thể đi xem một loại những gì các lĩnh vực an ninh thực sự trong thử nghiệm thâm nhập, xem làm thế nào bạn có thể có được trang web bên trong và bảo vệ mình khỏi nó. Vì vậy, nếu tôi thực hiện một cái nhìn tổng quan siêu nhanh chóng, nó sẽ được ngăn chặn cross-site scripting. Bạn muốn sử dụng htmlspecialchars mỗi thời gian các yếu tố đầu vào người sử dụng một cái gì đó. Ngăn chặn SQL injection. Nếu bạn làm điều đó, bạn đã tốt hơn so với Harvard là khi họ đã bị vi phạm. Và chắc chắn rằng mật khẩu của bạn đang không ở trong văn bản gốc. Hãy chắc chắn rằng bạn không chỉ có một cách băm họ, nhưng bạn nên sử dụng hầm mộ, PHP chức năng mà tôi thấy các bạn. Bằng cách đó, bạn sẽ được tốt. Ngoài ra, nếu bạn bè của bạn cho bạn, chạy SQL Tiêm nhớ trên trang web của họ. Chạy cross-site scripting trên trang web của họ. Và bạn sẽ nhìn thấy rất nhiều các trang web có một tấn các lỗ hổng. Thật không thể tin bao nhiêu người quên để vệ sinh cơ sở dữ liệu của họ hoặc để thực hiện chắc chắn những gì nhập vào của người không phải là mã kịch bản. OK. Tôi loại kết thúc rất sớm. Nhưng nếu ai có bất kỳ câu hỏi nào về bất cứ điều gì, bạn có thể chụp tôi một câu hỏi. Yeah. Đi, đi. ĐỐI TƯỢNG: Tôi chỉ muốn hỏi, bạn có thể giải thích cách các tập tin tải lên chính xác công trình. Luciano Arango: Vâng. Vì vậy, hãy để tôi chỉ cho bạn các tập tin tải lên thật nhanh. Vì vậy, các tập tin tải lên - vấn đề wit các tập tin tải lên ngay bây giờ là - Tôi sẽ mở mã để các bạn xem mã đằng sau hậu trường. Và nó được tải lên. Dưới đây là một mã cho tải lên tập tin. Chúng tôi đang cố gắng để đi vào này thư mục trên đây. Và chúng tôi đang cố gắng để, một khi chúng ta nhập tập tin, tập tin isset - vì vậy khi có một nộp trong FILES, hình ảnh đó, sau đó chúng tôi cố gắng để di chuyển nó ở đây. Chúng tôi lấy các tập tin ở đây. Phương pháp này là POST, chủng loại, hình ảnh, tập tin. Và chúng tôi đang gửi tập tin này. Và sau đó khi chúng tôi nhận được nó, vì vậy một khi tập tin có một hình ảnh, chúng tôi đang cố gắng để gửi vào thư mục này. Vấn đề là các trang web không phải là để cho tôi đi vào thư mục này, bởi vì nó không muốn tôi trở lại. Nó không muốn tôi đi - Tôi phải đi - vì vậy đây của tải lên. Dưới đây là hình ảnh. Tôi phải đi tất cả các cách trở lại bắt đầu và đặt nó ở đó và sau đó đi và đặt nó vào thư mục. Vì vậy, nếu tôi đã chạy một cửa sổ thiết bị đầu cuối, và tôi muốn di chuyển một tập tin - [Nghe được] có thể nhìn thấy nó. Nếu tôi muốn di chuyển một tập tin, tôi có để đặt tên tập tin và sau đó đường dẫn đầy đủ tôi muốn gửi đến. Và sau đó là máy chủ không cho tôi quay trở lại. Và do đó, nó không cho phép tôi nhận được tập tin đó. Nhưng thông thường - vì vậy có một mã cho tải lên một tập tin. Vì vậy, thường những gì sẽ xảy ra là người không kiểm tra nếu tập tin của tôi kết thúc với jpeg., vì vậy tôi sẽ muốn kiểm tra. Hãy để tôi mở một ví dụ quá thật nhanh chóng. OK. Người này đúng - để dụ hai là kiểm tra nếu preg_match - ở đây nó là ở đây - để đảm bảo rằng kết thúc với PHP, đó là tốt. Điều này là tốt. Nhưng có một thực tế lớn Vấn đề này. Điều này là tốt. Nhưng nếu tôi đã đặt một tập tin gọi là myfavoritepicture.php.jpeg, tôi có thể vẫn có khả năng thoát khỏi những jpeg và chạy it.k Đó PHP nguy hiểm. Bạn không muốn người để có thể để chạy mã trên trang web của bạn. Nhưng sau đó jpeg. Cho phép nó vượt qua. Ý tưởng là những gì bạn thực sự muốn làm không có các tập tin, A. Nhưng, OK, những gì bạn thực sự muốn làm là đảm bảo rằng bạn đọc trên toàn thế giới. Và không có gì. Php trong đó. Không có php trong. tên tập tin toàn bộ. ĐỐI TƯỢNG: Nhưng bạn có thể đặt. jpeg vào cuối. Các máy chủ vẫn chạy mã. Luciano Arango: Không, nó sẽ không chạy lúc đầu. Bạn phải quay trở lại và cố gắng để xem nếu bạn có thể - ĐỐI TƯỢNG: Vì vậy, chúng ta phải - OK, chỉ là một tập hợp có liên quan đến - Luciano Arango: Vâng. ĐỐI TƯỢNG: OK. Luciano Arango: Vâng. OK. Bất kỳ câu hỏi nào khác không? OK. Tôi sẽ để lại điều này và sắp xếp của cố gắng để xem nếu các bạn có thể - những người khác nhiều hơn một chút phức tạp bởi vì họ đòi hỏi nhiều kiến thức về SQL hơn là chỉ bắt đầu kiến ​​thức về web là SQL và những gì JavaScript. Nhưng tôi sẽ cố gắng duy trì như thế, và hy vọng các bạn sẽ học về điều này và cố gắng để có một peek tại những gì bạn có thể làm và làm thế nào nhiều ví dụ bạn có thể nhận được thông qua. Bất cứ ai có bất kỳ khác câu hỏi về nó? Đi trước. Yeah, bắn, bắn. Yeah, đi trước. Đi trước. ĐỐI TƯỢNG: OK. Vì vậy, tôi nghe nói về cách báo giá ảo thuật không đủ an toàn. Luciano Arango: Điều gì - Trích dẫn kỳ diệu? ĐỐI TƯỢNG: Vâng. Vì vậy, nó cho biết thêm - vì vậy bất cứ khi nào bạn nhập vào một cái gì đó, nó luôn luôn thêm dấu ngoặc kép. Luciano Arango: Vâng. Yeah. OK. ĐỐI TƯỢNG: Và sau đó tôi mặc dù làm việc, nhưng sau đó tôi tìm kiếm nó. Và nó nói nó không tốt. Nhưng tôi không chắc chắn lý do tại sao. Luciano Arango: Vâng. ĐỐI TƯỢNG: Không sử dụng Magic Quotes, bởi vì nó không an toàn. Luciano Arango: OK. Trích dẫn Vì vậy, Magic là khi bạn chèn SQL và nó đã được bổ sung thêm các báo giá cho bạn. ĐỐI TƯỢNG: Nó luôn luôn bổ sung thêm dấu ngoặc kép xung quanh bất cứ điều gì bạn đặt in Luciano Arango: Vâng. Vì vậy vấn đề với đó là - Tôi sẽ có một cái nhìn tại - ĐỐI TƯỢNG: Làm thế nào để có được nó các câu lệnh SQL? Hoặc tôi đoán nó có thể là như quote chọn. Luciano Arango: Vâng, bạn cần giá tốt cho SQL. ĐỐI TƯỢNG: Không, nhưng máy chủ hiện nó cho bạn. Luciano Arango: Những dấu ngoặc kép nhỏ ngay tại đây, những dấu ngoặc kép ít? ĐỐI TƯỢNG: Vâng. Luciano Arango: Vâng. Vấn đề là bạn có thể nhận xét ra cuối cùng - OK, vì vậy những gì tôi có thể làm là tôi có thể bình luận ra - vì vậy chúng ta hãy nhìn vào - cho tôi mở một tập tin chỉnh sửa văn bản. Hãy để tôi chỉ cần chỉnh sửa này ở đây trực tiếp. OK. Các bạn có thể thấy rằng rõ ràng không? Những gì tôi có thể làm là tôi có thể bình luận ra người cuối cùng. Điều này sẽ nhận xét ra người cuối cùng. Và sau đó tôi sẽ đặt một ở đây, đặt tất cả những thứ độc hại ở đây. Vì vậy, người sử dụng thực sự nhập, phải không? Người sử dụng không phải nhập những điều, phải không? Đây là những gì tôi sẽ đầu vào như người cố gắng để có được bên trong. Tôi sẽ đưa vào - đó là một dấu ngoặc kép. Nó chỉ là nguệch ngoạc do nhầm lẫn. Và sau đó những gì mã là sẽ làm gì - xin lỗi, tôi sẽ thực hiện việc này ra. Những gì các mã được sẽ làm là nó sẽ thêm đầu tiên dấu ngoặc kép ở đây. Và nó sẽ thêm cuối cùng dấu ngoặc kép là tốt. Và nó cũng sẽ thêm cuối cùng, cuối cùng đánh dấu ngoặc kép. Nhưng tôi cho ý kiến ​​các báo giá đánh dấu ra, do đó họ không chạy. Và tôi đang hoàn thành báo giá này đánh dấu ở đây. Bạn có hiểu không? Bạn bị mất? Tôi có thể bình luận báo giá mới nhất nhãn hiệu, và chăm sóc của dấu ngoặc kép đầu tiên. ĐỐI TƯỢNG: Và kết thúc đầu tiên. Luciano Arango: Vâng. Và chỉ cần hoàn thành đầu tiên. Vâng, đúng thế. Đó là những gì tôi có thể làm. Yeah. Bất kỳ câu hỏi khác như thế? Đó là một câu hỏi lớn. Không, có, có lẽ. Hy vọng rằng, các bạn sẽ loại làm ý nghĩa hơn khi bạn học SQL và những điều như thế. Nhưng chắc chắn rằng bạn - giữ những công cụ này trong đồng hồ. Xin lỗi, những công cụ này ở đây. Những công cụ này là rất lớn. Nếu ai có bất kỳ câu hỏi, bạn cũng có thể gửi email cho tôi. Đây là email bình thường của tôi. Và đây là email công việc của tôi, mà là khi tôi làm việc ở vùng biển. OK, cảm ơn. Cảm ơn mọi người. Bạn tốt để đi. Bạn không cần phải ở lại đây. Không vỗ tay. Đó là lạ. OK, cảm ơn mọi người.