You can learn Arduino in 15 minutes.

Arduinos! 나는 그들이 무엇인지, 그들이 무엇을 할 수 있는지, 그리고 어떻게 설정하는지에 대해 이야기 할 것입니다 하나는 심지어 LED 디밍 회로 만들기, 모터 속도 제어하기, 진동을 간단하게 만듭니다

Arduino는 무엇입니까? 나는 당신이 지금까지 백만 번이 물건에 대해 들었고, 당신이 손실을 당했다면 Arduino라는 단어는 여러 가지 다른 의미를 지니기 때문에 모든 권리가 있습니다 계속 지켜봐 주시고 모두 설명해 드리겠습니다 마이크로 컨트롤러는 본질적으로 소형 컴퓨터 인 집적 회로입니다 작고 간단한 프로그램을 실행할 수 있습니다 배터리는 며칠 동안 배터리로 작동 할 수있을만큼 충분히 저전력이지만 누구보다 빨리 데이터를 처리 할 수있을만큼 빠릅니다

Arduino는 마이크로 컨트롤러를 만드는 회로 기판을 설계하고 판매하는 이탈리아의 회사입니다 사용하기 쉽습니다 그들은이 Arduinos 회로 기판을 호출하고 Arduinos의 종류가 많이 있습니다! 예를 들어 Arduino Ono와 같은 단순한 Arduino 그림은 저렴하고 훌륭합니다 대부분의 프로젝트에 충분합니다 Arduino Ono를 사용하여 모터, 조명, 카메라 또는 간단한 빌드를 제어 할 수 있습니다

로봇 그런 다음 Wi-Fi를 갖춘보다 강력한 프로세서를 갖춘 더 멋진 Arduinos를 보유하게됩니다 이더넷 등 Arduino는 하드웨어 디자인 전반에 걸쳐 오픈 소스 회사입니다 단지 그들을 사면 수많은 변수가있는 제 3 자 회사가 있습니다

Arduino 하드웨어 디자인 중 그들은 Arduinos라고 부를 수는 없지만 기능면에서 모두 동일합니다 Arduino라고 불리는이 물건은 기본적으로 회로 보드 인 "갑옷"입니다 그게 메인 회로 보드 Arduino를 연결하고, 당신이 더 많은 일을 할 수 있습니다 예를 들어 Adafruit는 갑옷을 제작하여 엔진과 기계를 제어 할 수 있습니다

모터 회로 컨트롤러를 설계합니다 Sparkfun에는 Arduino를 간단한 휴대 전화로 사용할 수있는 갑옷이 있습니다 MP3 플레이어! Arduino 회사 인 Arduino 하드웨어를 간략히 살펴 보았습니다 하지만 더 있습니다! Arduino를 만드는 소프트웨어 개발 Arduino 환경도 있습니다 초보자에게 좋습니다

역사적으로 마이크로 컨트롤러 프로그램을 원한다면 바이너리와 기억하기 어려운 많은 기록과 지시 사항을 저장하십시오 그런 다음 사용자 정의 케이블과 함께 특별한 하드웨어 소프트웨어를 사용하여 다운로드해야합니다 귀하의 마이크로 컨트롤러에 프로그램하십시오 회사 인 Arduino는 모든 것을 제거했습니다 Windows, Mac 및 Linux에서 실행되는 프로그램을 작성하여 업로드 USB 케이블을 연결하고 버튼을 클릭하는 것과 같은 간단한 코드

Arduino 디바이스를 구성 할 수있는 프로그래밍 언어를 만들었습니다 제품도 같은 방법으로 사용됩니다 Python을 배우는 것만 큼 간단하지는 않지만 Arduino 소프트웨어는 가장 쉬운 프로그래밍 경험 좋아, Arduino가 다른 상황에서 의미하는 바를 잘 설명해줍니다 이제 사람들이 자신의 프로젝트에 "Arduino"를 사용했다고 말하면 아마 그들은 말하고 있습니다

Arduino Ono 정보 조만간 뛰어난 실적을 거둘 가능성은 희박하므로 완벽한 Arduino입니다 이 자습서의 하드웨어 초보자 당신은 싼 가격에 아마존 사이트에서 그들을 얻을 수 있고, 돈이 있다면 나는 하나 사기를 추천한다 많은 오노 (Ono) 키트가 있으므로 여러 가지 하드웨어를 가지고 놀 수 있습니다

와 Arduino Ono가 생겼어 내가하고 싶은 일은 당신이 기계에 익숙해 지도록하는 것입니다 Arduinos는 기술적으로 부정확 한 소위 마이크로 컨트롤러를 자주 듣게됩니다 Arduinos는 마이크로 컨트롤러 칩을 가진 회로 기판이지만, 거기도 다른 것들

빠른 둘러보기 이것은 마이크로 컨트롤러입니다 Arduino UNOS는 ATMEGA AVR이라고 불리는 일련의 마이크로 컨트롤러를 사용했습니다 아트멜 (Atmel)이라는 회사가 제작했습니다 당신은 단지 달러를 저주하기 위해 독자적으로 베어 칩을 살 수 있습니다

용접을 많이하십시오 크리스탈 공진기는 마이크로 컨트롤러에 연결됩니다 이것은 마이크로 컨트롤러의 속도를 제어합니다 유용 할 수있는 mRNA와 지표에 대한 별도의 자습서가 있습니다 이제 주 마이크로 컨트롤러에 생성 된 프로그램을 다운로드하려면 실제로 또 다른 마이크로 컨트롤러! 이 칩은 USB 케이블을 Arduino 패널에 연결하고 USB를 통해

일단 당신이 가지고 있으면 당신은 주 마이크로 컨트롤러에 소프트웨어를 다운로드 할 수 있습니다 프로그램을 실행하면,이 슬라이드는 다음 사이에서 메시지를주고받을 수있는 것입니다 귀하의 컴퓨터는 Arduino입니다 이것은 디버깅에 매우 중요합니다! Arduinos에 관한 한 가지 중요한 점은 USB 케이블을 통해 순수하게 전원을 공급할 수 있다는 것입니다 하지만! 프로젝트를 항상 컴퓨터에 연결하지 않으려면 외부 프로젝트 만 사용할 수 있습니다

배럴 잭이있는 9 볼트 DC 전원 공급 장치 ONO에는 전압을 5 볼트로 줄이는 전압 조절기가 내장되어 있습니다 Arduino 프로그램을 "재부팅"하고 싶다면 리셋 버튼이 있습니다 시간이 있다면 Arduino Uno 개략도를 공부하는 것이 좋습니다 복잡해 보이더라도 걱정할 필요가 없습니다

더 많이 이해할 필요는 없습니다 Arduino가 디자이너가 아닌 것을 이해하게하려면 또한 마이크로 컨트롤러 랙에서 꺼내게하려면 많은 추가 부품이 필요합니다 일하고, 모든 것을 함께 사용하기 쉬운 방법으로 정리하십시오 전자 제품에 대해 더 많이 배우기를 원한다면 이처럼 회로 보드를 만들 수도 있습니다

글쎄, 그것은 두포의 밑에있는 것이다 다음으로 핀 커넥터에 대해 살펴 보겠습니다 여기에 전원 핀이 있습니다 원하는 경우 5 볼트 또는 33 볼트로 다른 전 원 회로에 전선을 연결할 수 있습니다 볼트

모든 전력이 몇 mA 이상을 소모하지 않도록하십시오! 약간의 전구가 괜찮지 만 Ardui Nono가 될 큰 차가 될 것입니다 (부! 너 빨아!) TX와 RX는 직렬 데이터를 송수신합니다 이 포트를 사용하여 GPS 모듈, Bluetooth 모듈, Wi-Fi 모듈 등 2-13 핀은 디지털 입출력 용입니다 보통 사람들이 바이너리를 생각할 때 당신은 0S와 1S를 뱉어 버리는 것을 생각합니다

하지만! 대부분의 마이크로 컨트롤러 핀을 사용하면 실제로 세 번째 상태를 활성화하고 디지털 입력 따라서이 수치를 5V가 1 또는 0V ~ 1로 떨어지는 출력으로 사용할 수 있습니다 디지털 0 또는 Arduino를 내부적으로 구성하여 핀의 전압을 예측할 수 있습니다이 전압 1 또는 0으로 해석 될 수 있습니다 Trigonometric Logic이라고 불리는 시스템이며, 읽을만한 가치가 있습니다

하지만 Arduino는 그것을 만듭니다 소프트웨어에서 입력과 출력을 쉽게 변경할 수 있습니다 여기서 우리는 6 개의 아날로그 입력 핀을 가지고 있으며, 이들은 어디에서나 연속 전압을 측정하는데 사용됩니다 0 ~ 5V 나중에 비디오에서 더 자세히 이야기하겠습니다 마지막으로 일부 못은 그 앞에 물결표가 표시되어 사용할 수 있습니다

사각 파를 포함하고있는 펄스의 폭을 출력하려면 비디오의 뒷부분에도 나타납니다 하드웨어에 관한 것 Arduino로하는 대부분의 작업은 실제로 프로그램에 포함됩니다 그러니 arduinocc에서 Arduino 프로그램을 다운로드하십시오

설치하는 동안 이와 같은 많은 드라이브가 나타날 것으로 예상 할 수 있습니다 다른 드라이버를 설치할지 묻는 메시지가 나타납니다 모든 것에 예라고 말하십시오 작업이 끝나면 USB 케이블을 사용하여 Arduino를 컴퓨터에 연결하십시오 그 후에 Arduino의 개발 환경을 시작하십시오

가장 먼저 할 일은 프로그램이 연결을 시도하는지 확인하는 것입니다 Arduino의 올바른 종류 도구, 판, 우리는 Arduino Ono를 사용할 것입니다 다음으로 Arduino가 현실과 연결하고 의사 소통 할 수있는 환경을 확인해야합니다 너의 Arduino

도구, 포트로 이동하여 Arduino가 연결된 COM 또는 직렬 포트를 선택하십시오 여기 Arduino가 없다면 드라이버에 문제가 있거나 Arduino를 다른 USB 포트에 연결해보십시오 Arduino 프로그램에는 시원하고 쉽게 따라 할 수있는 디스플레이 프로그램과 연구가 있습니다 이것은 코드 작성법을 배우기에 가장 좋은 곳입니다 Arduino는 "스케치 (Sketches)"라고 부릅니다

이 스케치는 그들이 수행하는 프로그램의 멋진 이름입니다 너의 arduino 들어 Arduino에 도입 된 전압을 측정하는 예제부터 시작합시다 파일, 예제, 기본, AnalogReadSerial로 이동하십시오 모든 Arduino 예제에는 장치 설정 방법에 대한 지침이 포함되어 있습니다

이것은 "전압의 핀 중심을 A0 핀에 연결하고 + 5V 및 접지 용 외부 핀 " 글쎄 하자! 10K 또는 1K 전압은이 작업에 매우 효과적입니다

우리는이를 0-5 볼트 어디에서나 전압을 생성하는 전압 분배기로 사용할 것입니다 어떻게 할 수 있는지 이해하지 못한다면 전압 분배기 튜토리얼을 보았는지 확인하십시오 작동합니다 각 Arduino 프로그램에는 두 가지 주요 영역 인 setup과 loop가 있습니다 Arduino가 몇 가지 일을하도록 설정할 수있는 설정 영역 프로그램의

정보는 출력되는 입력 핀일 수 있지만 이들 우리가 말한 경우 직렬 데이터를 초당 9600 비트로 컴퓨터에 보냅니다 이 경우 데이터 속도가 표준입니다 루프는 Arduino만큼 반복적으로 반복되는 코드 영역입니다 그렇게 할 수있는 능력이 있어야합니다 이 라인은 핀 A0의 전압을 측정하고 그 값을 타이머에 저장합니다 메모리에 넣어서 sensorValue를 호출하십시오

sensorValue는 정수 또는 true이며, 이는 정수입니다 sensorValue에 대한 아날로그 판독 전압을 복사 한 후 Serialprintln 명령 이 값은 Arduino에서 USB 케이블을 통해 컴퓨터로 전송됩니다 우리는 그것을 볼 수 있습니다 업로드를 클릭하면 그림이 어셈블되어 카드에로드됩니다

리셋 버튼을 누르십시오 이제 도구, 직렬 모니터로 이동하십시오 당신은 일련의 숫자가 날아가는 것을보아야합니다 전압을 0에서 5 볼트로 변경하면 화면에 그림이 표시됩니다 0-1023

Arduino는 내부적으로 아날로그 전압을 나타 내기 때문에 10 0-1023 일 수있는 비트 수입니다 전원 공급 장치와 선형으로 연결된 숫자 테이블은 최대 25 볼트까지 512의 중간에 위치합니다 이 수식을 사용하여 아날로그 신호 값을 실제 전압으로 변환하거나, 그리고 그 반대도 마찬가지입니다 이제 직렬 모니터를 닫고 도구, 직렬 플로터로 전환하십시오

이제 시간이 지남에 따라 생성 된 전압을 그래프로 볼 수 있습니다 그것은 기본적으로 매우 간단한 프로세스, 저 대역폭 오실로스코프입니다! 간단한 LED 조광기를 만드는 또 다른 실험을 해보 죠 파일, 예제, 아날로그, AnalogInOutSerial로 이동하십시오 위와 같은 전압에 대한 지침 이 보고서는 또한 LED가 9 핀 디지털에서 접지로 연결된다고 전했다

이것은 LED가있는 문자열에 저항을 넣을 것을 의미합니다! Arduino의 핀은 많은 스트림을 제공 할 수 없습니다 어떤 20MA라도 그 핀을 파괴 할 영구 위험이 있습니다 LED 및 저항 값에 대한 자세한 자습서가 있지만 이제는 1K 저항을 사용합시다 지상에 붙어있다 다른 쪽은 LED의 음극에 가고 LED 양극은 9 번 핀에 연결됩니다

우리는 정수가 무엇인지 이미 이야기했지만,이 CONST 연구원은 analogOutPin이 레이블이라는 것을 의미합니다 나머지 프로그램에서 항상 9 번으로 번역됩니다 예를 들어, analogWrite (9, outputvalue)를 말하는 것은 너무 명확하지 않습니다 9 대체 뭐야? 대신 우리는 analogOutPin이 항상 Arduino의 메모리에있는 장소라고 선언합니다 연속적인 고정 숫자 9를 저장하므로 코드의 다른 부분을 작성할 때 우리가 다른 것들을 위해 사용하는 비밀 번호를 저장합니다 현재 큰 문제는 아니지만 사용중인 프로그램을 가지고있을 때 이것이 더 중요해진다 많은 다른 핀들 sensorValue 및 outputValue는 고정되지 않은 정수이므로 변경할 수 있습니다

프로그램을 실행하는 동안의 가치 프로그래밍에서이 용어는 "가변적"입니다 Arduino 플랫폼에서 변수 int는 -32,768과 32767 설정은 이전과 동일하며 다시 한번 analogRead 함수를 사용합니다 주어진 핀의 전압을 측정하기 위해 A0 핀이 표시됩니다 이 값을 sensorValue에 저장합니다 우리는 이제 Arduino가 0-1023 숫자의 내부 아날로그 전압을 나타내고, 그러나 analogWrite 함수는 값 0-255 만 허용합니다

여기서는 함수 맵을 사용하여 sensorValue를 선형 적으로 0에서 0 사이의 값으로 확장합니다 그리고 255 그런 다음 analogWrite 함수는 outputValue에 저장된 숫자를 사용하여 제어에 사용됩니다 analogOutPin의 전압은 실제로 핀 번호 9입니다 일련의 인쇄물은 이전과 같이, 각 에피소드가 끝날 때와 같습니다 지연 기능은 Arduino의 일시 정지가 지정된 번호의 모든 코드를 실행하게합니다 밀리 초 중

다시 한번로드를 클릭하고 Arduino에서 재설정을 클릭하면 이제 시스템에서 다음을 수행 할 수 있습니다 전압으로 LED의 밝기를 제어하십시오! 이제 어쩌면 너는 그걸 생각하고있을거야 Arduino 없이도 할 수 있습니다! 음, 오실로스코프로 핀 9의 출력을 조사하여 실제로 발생하는 것을 확인해 봅시다 여기 구형파 폭 변조 펄스가 있습니다! 전압으로 제어 할 수있어 매우 정확합니다

자, LED 대신에, 다른 것을 제어하자 저의 고전적인 펄스 디스플레이 모듈레이션 튜토리얼의 회로 부분을 살펴 보겠습니다 이제 우리는 555 번 글리치가있는 회로 대신에 모터를 디지털 방식으로 제어 할 수있게 될 것입니다 그래서 analoguerite라고 불리는 Arduino의 기능이 이상하다고 생각할 수 있습니다 사실 포함 된 파동의 펄스 폭을 제어하십시오

글쎄, 그 생각은 RC 패스 필터를 사용하여 저주파 사각형을 변환하는 것입니다 정전압 아날로그의 경우이 작업을 수행하는 방법에 대해 별도의 강의를 진행합니다 몇 가지 예를 살펴보고 작동 방식을 이해했으면 해당 부분을 삭제할 수 있습니다 코드에서 기존 코드를 수정하여 원하는 코드를 만듭니다 여기서는 제어 전압과 직렬 부품을 없애고 그것을 만들었습니다 루프는 1 초 동안 엔진을 끄고 1 초 동안 모터를 50 % 그런 다음 최고 속도로 1 초 간 이동하십시오

그러면 센서의 전압을 읽고 모터를 제어하는 ​​코드를 작성하는 방법을 알 수 있습니다 기계, Arduino 쉽게 간단한 로봇의 두뇌가 될 수 있습니다 실제로 Arduino 기반 로봇을 구축 할 그룹을 $ 74 미만으로 확보 할 수 있습니다 그래서이 두 가지 쉬운 예제는 Arduino로 할 수있는 것이 었습니다 그러나 여러분은 그렇게 할 수있었습니다 훨씬 더, 그들을 위해 인터넷을 통해 튜토리얼이 있습니다

시청 해 주셔서 감사합니다이 동영상이 유용하다고 생각되면 스폰서를 확인하십시오 가청 오디오는 아마존 소유의 회사이며 기본적으로 오디오 북 컬렉션을 보유하고 있습니다 출근길이나 체육관에있을 때 구입하여들을 수 있습니다

지금 업그레이드를 할 수 있습니다 가입하면 무료로 책을 읽을 수 있습니다 그들의 trial time은 30 일입니다 audiblecom/afrotechmods 방문한 후에는 다음을 사용하여 로그인 할 수 있습니다 아마존 계정 목록

신용 카드 번호를 부여해야하지만 IE에서 무료 평가판을 취소 할 수 있습니다 시간, 당신은 여전히 ​​오디오 도서를 무료로 유지 나는 개인적으로 Ryan Holliday를 좋아한다 – 그는 Trust me라고 불리는이 놀라운 책을 얻었다, 나는 거짓말을한다 미디어 조작자의 고백 나는 누군가가 어떻게 가짜 "전문가"로서 자신을 포즈를 취하고 인용 할 수 있는지에 대한이 미친 이야기를 가지고있다

뉴스 기사에서 청력 상태를 청취 상태로 선택하면 휴대 전화에서 가청 응용 프로그램을 다운로드하거나 태블릿으로 어디서나 카세트에 액세스 할 수 있습니다 흥미로운 것으로 들리면 동영상 섹션 설명에서 링크를 클릭하십시오 또는 audiblecom/afrotechmods를 방문하여 무료 평가판을 시작하십시오!

15 Technique to Exploit File Upload Pages – Ebrahim Hegazy, HackIT-2017

내 이름은 Ibrahim Hegazy입니다 오늘은 약 15 가지 기법을 사용하고 있습니다

파일 업로드 페이지 나는 현재 Deloitte Netherlands의 고위 컨설턴트입니다 나는 나 자신을 보안 녀석이라고 부르고 싶지만 실제로는 이런 종류의 보안이 아니다 물론, 아니, 물론, 아니 네

나는 최고 안보로 평가 받았다 야후의 연구원,하지만 2014 년 3 개월 전, 그들의 버그 현상금 프로그램의 취약점들 예, Ali는 이미 버그 현상금 프로그램이 무엇인지 설명합니다 예 오늘의 의제입니다

음, 이 개념을 설명하는 "내가 누구인가"의 핵심 개념은 개발자가 코드를 더 나은 방법으로 수정하는 방법을 알고 싶습니다 개발자는 40 명의 공격자를 갖고 있습니다 즉, "앱 경량 펜 테스터 (testers) "또는"화이트 모자 해커 (white hat hackers) "라고 불렀다 개발자 그래서 이것은 오늘날의 밑입니다

어떤 파일을 설명 할게 업로드는, 파일 업로드 페이지의 주요 구성 요소는 무엇이며, 나는 개발자가 완화를 위해 수행하는 작업과 같이 각 부분을 설명합니다 파일 이름 확인, 콘텐츠 사이트 유효성 검사, 파일 콘텐츠 유효성 검사 그리고 나서, 어떻게 해커가 그것을 우회 할 수 있는지 그렇습니다 그리고 결론적으로, 저는 최선의 관행처럼 개발자 : 이러한 공격을 완화 할 수있는 가장 좋은 방법은 무엇입니까? 너도 알다시피

개발자들은 결국 이겨야 만합니다 또는 해커가 항상 이기고, 누군가는 결국 승리해야한다 예, 이것은 세션 마치 한 곳에서 최고의 기술로 모든 파일 업로드를 모으는 것과 같습니다 그래서, 침투 테스터 나 버그 사냥꾼이라면 꼭 가야 할 필요는 없습니다

파일 업로드 작업을 우회하는 방법을 검색하는 인터넷 크롤링 한 곳에서 모든 것을 갖췄습니까? 물론 개발자에게 도움이됩니다 예, 이것은 티저입니다 이것은 YouTube에서 누군가가 발견 한 취약점입니다 이것은 YouTube의 진짜 등 'passwd 파일입니다 그래서, 그는 파일을 읽을 수있었습니다

YouTube 서버에서이 파일은 실제 파일입니다 나는 이것을 설명 할 것이다 세션 나는 티저로 여기에 넣었습니다 그래, 많은 사람들이 티저가 뭔지 알지? 네

괜찮아 그래서, 주 파일은 "청색 페이지"에는 거의 다섯 가지 주요 구성 요소 인 불이 들어 있습니다 언젠가, 파일 크기 부분은 아니지만 항상 헤더 자체와 함께 보내야합니다 그래서 우리는 첫 번째가 있습니다 – 파일 이름은 파일 번호입니다 확실해, 당신은 그 파일 유형을 볼 수 있어야합니다

파일 유형은 실제로 예를 들어 PNG가있는 경우 확장 프로그램을 기반으로 일부 테이블에서 거의 이미지 백 슬래시, 미안, / PNG 또는 MS PDF, 죄송합니다, PDF 파일 인 경우, PHP와 같은 응용 프로그램은 / XPHP와 비슷합니다 네 그리고, 매직 넘버 따라서 개발자를 위해 거기의 파일 내용은 모든 파일간에 유사성이 없습니다 맞습니까? 그러나 비슷한 것은 언제나 – 매직 넘버입니다

마법 번호는 무엇입니까? 매직 넘버는 마치 시작 줄을 시작하거나 GIF가있는 경우와 같이 파일 식별자를 보냅니다 모든 이미지를 GIF로 시작합니다 좋아, 89,98,83,89 GIF89 또는 GIF87 그런 다음 ":"다음 이미지 자체의 내용을 표시합니다 그래서, 이것이 마술입니다

숫자가 작동합니다 일부 개발자는 이것을 검증하고 있습니다 (예 : WordPress) 당신이 이것을 사용했다면 Alex는 우리가 어떻게 그것을 우회 할 수 있는지에 대해서도 이야기했습니다 그 종류의 검증 그리고 나서 파일 내용과 파일 크기는 물론, 예, 개발자 검증 시나리오를 건너 뛰도록하겠습니다

좋아요, 개발자들은 블랙리스트를 정말 좋아합니다 그래서, 오, PHP 파일, 아니, 나는 싫어 이 하나는 PHP를 블랙리스트로 보겠습니다 이것이 첫 번째 시나리오입니다 사용할 수 있습니까? 이런 종류의 검증에 무슨 문제가 있습니까? 뭔가 있어요? 고르그에가는거야? 나는 이미 그 해결책을 썼다

당신은 그것에 대해 생각해야합니다 이 유효성 검사에서 무엇이 잘못 될 수 있습니까? 괜찮아 따라서 개발자는 주로 파일 이름의 유효성을 검사합니다 regex "정규 표현식"이라고 불린다 그래서,이 경우, 세 번째 라인 "if"로 시작하는 것입니다

정규식은에서 유효성을 검사합니다 파일의 확장자는 PHP 또는 PHP1 또는 PHP2 등입니다 마지막에는 "$"기호와 같은 기호가 있기 때문에 파일이 끝나면 이러한 확장 기능 중 하나를 사용하십시오 그러나 사례 인스턴스의 유효성을 검사하지는 않습니다 PHP 같은 대문자와 같아 지려고한다면, 무언가와 같은 무감각 대문자, 대문자 일 경우이 유효성 검사를 건너 뜁니다

그래서, 이것이 첫 번째입니다 유효성 검사 블랙리스트 작성 개발자가 파일을 완화하는 방법 업로드 그들은 파일이 PHP로 끝나지는 않지만 파일이 대소 문자를 구분하지 않습니다 그래서 PHP를 작성할 수 있습니다 쉘처럼, PHP 버튼의 대문자를 쓰면, 이런 종류의 것을 무시할 것입니다

확인 네, 두 번째 시나리오 블랙리스트 그리고 우리는 적절하게 파일 확장자의 유효성 검사, 파일 이름의 민감도 그 자체 그들은 실제로 모든 것을 유효하게하고 있지만, 다른 확장, 내 말은, 이런 식으로, 코드가 나빠지는 것입니다 블랙리스트에 대해 나쁜 것

당신은 블랙리스트에 올 수 없습니다 모든 가능한 확장 기능을 알고 있지? 그리고 매일 매일 같이 새로운 것이 있습니다 기술의 변화, 새로운 기술이있을 수도 있고 새로운 기술이있을 수도 있습니다 신장 예를 들어, 해당 파일은 PHT라고합니다

PHT는 PHP 파일을 실행할 수있는 확장 기능입니다 그래서, 그들이 개발되면 개발자는 PHP, PHP1로 끝나는 모든 파일을 대문자로 차단합니다 작은 등 당신은 그것을 무시할 수 있습니다, 예를 들어, PHT 파일 따라서 블랙리스트 기술을 우회하는 방법이지만 Linux에서는 사용하지 마십시오 Windows에서 이에 상응하는 기능은 무엇입니까? 여기에 우리가 Windows에서 이에 상응하는 이동합니다

만약, 예를 들어, 개발자가 완화하거나, 말하자면 ASP, ASPX를 블랙리스트에 올리면됩니다 파일 여전히 호출 된 확장명을 사용할 수 있습니다 미안 해요, 때문에 speedodll, 나는 괜찮아요

그래서, 당신은 이것을 감당할 수 있습니다 예를 들어, ASA 또는 CER이라는 확장을 사용할 수 있습니다 CER은 무엇입니까? 우리는 일반적으로 그것을 사용하지 않기 때문에 CER은 다음과 같습니다 증명서, 맞지? 그러나 아니, 제 생각에, 저는 오래된 ASA라고 생각합니다

해결되지 않았습니다 터치 된 버전 75 그것은 ASA로 끝나는 파일을 다음과 같이 실행하는 것을 정말 좋아합니다 이것이 ASP 파일 인 경우

예를 들어, 여기에 ASP Shell이 ​​있습니다 CET, CER을 볼 수있는 이름은 죄송합니다 파일 업로드를 우회했습니다 왜? 개발자는 ASP 및 ASPX 확장 만 블랙리스트에 올리기 때문입니다 그러나 여전히 동일한 ASP 코드를 실행할 수 있지만 다른 확장명을 사용하면됩니다

예 시나리오 시나리오 3 블랙리스트 모든 실행 확장 프로그램을 우회합니다 그래서 예를 들면 개발자는 모든 ASP에 모든 PHP, 모든 HTML 또는 AHTML, BHTML을 블랙리스트에 올렸습니다

모든 것, 모든 가능한 것, 실제로 XSS를 실행하거나 저장할 수는 있지만, EML이라는 확장을 사용합니다 EML이 무엇인지 알고 있습니까? 네, 예를 들어 Thunderbird를 사용하는 경우 Thunderbird는 다음과 같습니다 아웃룩,하지만 리눅스에 Windows에서도 사용할 수 있습니다

예, 전자 메일로 보내면 EML로 내 보냅니다 그래서, 이것은 일반적으로 EML을 여는 경우입니다 파일이 처리되지만 실제로는 Internet Explorer에서만 작동합니다 따라서이 기능은 Internet Explorer에서만 악용 될 수 있습니다 그래,이 경우 끈의 XSS는 일종의 HTML 컨텐트로 실행되기 때문에 트리거됩니다

그래서, 파일 내용과 검은 스크린 샷을 볼 수 있습니다 "안녕하세요"라고 말하면서 XSS 페이로드는 배포 된 단어를 확인하는 것과 같습니다 괜찮아 네 그 링크에 대한 자세한 내용은 여기에 있습니다 당신이 가고 있다면, 정말로 원한다면 이 인코딩 때문에 POC 자체 및이를 악용하는 방법에 대해 자세히 알아 보려면 인코딩은 까다로운 일입니다

쉽지만 까다 롭습니다 네 그래서 우리는 이제 개발자가 사용하는 블랙리스트 기술을 알고 있습니다 허용 목록이란 무엇입니까? 개발자가 블랙리스트에 올라 있지는 않지만 화이트리스트에 올라 있다면, like, 허용 된 확장 기능 만 웹 사이트에 업로드 할 수 있습니다 괜찮아

대본 4이 정규식에 어떤 문제가 있는지 알아볼 수 있습니까? 뭐라고 생각하니? 이 거절에 여기에 잘못 가고 있니? 네 따라서 개발자는 파일에는 해당 확장이 들어 있습니다 하지만 그는 만들고 있으며, 만들고 있지 않습니다 파일은이 확장자로 끝납니다

그래서, shellJPGPHP라는 파일을 업로드하면 JPG가 포함되어 있습니다 그러나 그것으로 끝난다 PHP

따라서 파일에 해당 이름이 포함되어 있는지 확인하는 중이지만 만들지는 않습니다 물론, 허용 된 확장 기능으로 만 끝납니다 그래서, 이것은 우리의 백색입니다 네 그래서, 예를 들어,이 정규식에서 이것을 볼 수 있습니다 : regex 101이라는 사이트가 있다면이 웹 사이트를 사용하여 일종의 문자열에 대한 정규 표현식, 작동하는지 여부

예, 예를 들어 JPGPHP를 동일한 파일로 저장하는 것을 보았습니다 이전 코드에서 사용 된 regex와 일치하는 바이 패스입니다 파일에 JPG가 있지만 JPG로 끝나지 않습니다 맞습니까? 괜찮아

지금 시나리오 번호 5 널 바이트 주입입니다 null 바이트 란 무엇입니까? 누군가가 우리에게 손을 줄 수 있습니까? null 바이트 란 무엇입니까? 네, null 바이트는이 사람들을위한 터미네이터입니다 "C"배경에서 그것은 터미네이터의 일종으로 100 % 0입니다

제로 이것은 null 바이트입니다 내 말은, 코드처럼, PHP는 갈래졌습니다 C, 맞지? 따라서, 그들은 "C"에 주로 기초를두고 있습니다 구문에 상관없이 C에있는 문제가 PHP에 존재할 수 있습니다

네 그래서, 터미네이터 건 뭐니? 예를 들어 일부 개발자는 파일 이름은 자신을 업로드하지만, 파일의 이름을 지정하면 쉘과 같은 이름이됩니다 PHP100 % 00JPG JPG, 무슨 일이 일어날 지 알 수 있습니다

우연히 있다 문제는 관찰자가 점만 이해하고 처음에는 확장자는 일반적으로 100 % 00이므로 종료 문자입니다 그래서, PHP는 무엇이든지 후, "P"는 종료됩니까? 그것은 존재하지 않는다 당신은 그것이 존재하지 않는다고 말할 수 있습니다 이제 파일의 이름은 shadow PHV입니다

너는 할 수있다 또한 16 진수 표현을 사용하여 바꿉니다 그것은 또한 작동합니다 어쨌든 같은 기술 이것은 샘플 코드입니다

만약 당신이 이것을보고 있다면, 나는 의미합니다 이것은 코드 자체 내에서 어떻게 보이는지입니다 시나리오 6 예 약간 웹 사이트는 SVG이기 때문에 그렇습니까? SVG는 일종의 이미지이지만 거의 발명 했어

내 말은, 그들은 html5와 관련이있다 그것이 갔을 때, html5는 html5로 시작하여 성장하기 시작했습니다 SVG는 비슷한 XML 컨텐츠 따라서 개발자가 SVG 이미지를 업로드 할 수 있도록 허용하는 경우 여전히 XML 콘텐츠를 넣을 수 있습니까? XML 컨텐트는 무엇을 할 수 있습니까? 정확하게 XXE 또한 XML에서 많은 것을 할 수 있지만 왜 개발자가 SVG 파일에 XML이 포함되어있는 경우 SVG 파일을 신뢰합니까? 왜냐하면 이것은 개발자가 생각하는 방식입니다 개발자는 항상 보안이 아닌 유용성에 대해 생각하고 있습니다

그들은 이 방법을 사용하여 고객이 만족하게 될지에 대해 생각해보십시오 신청 우리 고객을 만족시키는 것은 무엇이든 허용해야합니다 이것은 개발자의 업무 방식과 해커가 좋아하는 방식입니다 네, 이것은 비디오 업로드 된 것을 허용합니다

이것은 착취입니다 나는 설명 할거야 그것은 VK에 반대 해왔다 VK, 나는 러시아의 페이스 북이 비슷하다고 생각한다 또한, facebook

com에는 동일한 취약점이 있었지만 YouTube에는 동일한 취약점이 있으며 이게 바로 솔직히 말하면, 이것은 개발자를 악용하는 것이 아닙니다 잘못 당신은 당신이 개발 한 서버 측 라이브러리를 이용하고 있습니다 FFmpeg, 예 그래서 FFMPEG 일 때, 예를 들어 YouTube와 같은 비디오를 업로드 할 때, 이 명령을 실행합니다

예를 들어,이 명령을 실행할 것입니다 그것은 FFMPEG-I 배치 끝에 있습니다 videoavi 또는 m3u 또는 기타 확장을 누른 다음 mp4로 변환합니다 따라서 사용자는 미리보기 할 수 있습니다

이 파일은 내용이 다음과 같이 보이는 경우입니다 예를 들어 m3u로 저장하면됩니다 그래서, 당신이 알아 차릴 때, 거기에 무언가가 고무로되어 있고 ETC passwd를 제출하지 않은 파일입니다 너는 ETC passwd 파일을 읽으려고합니다 파일이 서버에 업로드되면 이 명령을 사용하여 변환 된 다음 파일을 볼 때 명령이 실행됩니다

그래서 FFMPEG의 취약점이었습니다 당신이 개발자들을 비난 할 수있는 무언가가 아닙니다 왜냐하면, 모든 것이 YouTube와 같은 모든 웹 사이트, Facebook은 어쨌든 취약했고 트릭은 여전히 ​​작동합니다 사실, 나는 많은 침투를 경험했다 테스트, 맹세,이 트릭을 사용하고 작동하지만 지금은 수정되었습니다

내말은, 물론 서버를 업데이트하면 문제가 해결됩니다 네, 트래버스 덕분에 여전히 화이트리스트에 포함됩니다 예를 들어, 개발자는 흰색입니다 JPG 이미지 만 업로드되고 올바른 방식으로이를 수행하고 있음을 나열하면, 그것을 무시할 수는 없으며 PHP 파일을로드 할 수 없습니다 네가 할 수 있는게 뭐지? 케이스? 왜냐하면, 내가 말했듯이, 테스터 또는 취약성 사냥꾼으로서, 당신은 여전히 시원한 걸 찾으려면, 맞지? 당신은 버그 현상금 창조자를 편리하게해야합니다

프로그램 제작자 또는 소유자와 마찬가지로 관리자 일 수도 있습니다 복용하는 경우 침투 테스트, 당신은 뭔가 멋지다는 것을 발견해야합니다, 맞습니까? 그러나, 당신은 단지 JPG 파일 업로드 허용 이 경우 "디렉토리"라는 것을 사용할 수 있습니다 탐색 (traversal) "을합니다 따라서 PHP / images / 2017 / thumbnails / images

JPG, 이것은 매우 긴 것입니다 정상이야, 맞지? 하지만 내 파일을 logoJPG 또는 logoPNG를 클릭 한 다음 "/", "/"을 실행하면 메인 웹 사이트 디렉토리에 저장하고 파일을 대체했습니다 내말은, 그것은 웹 사이트의 로고를 대체했습니다

이제 로고 웹 사이트를 대체 할 수 있습니다 내 회사 이름과 같은 멋진 정보 또는 시체를 해킹하거나 테스트를 원한다면 테스트하십시오 이것은 불리는 것입니다 – "디렉토리 트래버 설" 파일을 업로드하여 디렉토리를 벗어나려고합니다 디렉토리가 아닌 다른 디렉토리 에있다

그래서, 이것은 정상적인 것입니다, 당신은 단지 당신의 파일 이름을 유지할 수 있습니다 로고 그대로입니다 JPG 그리고 /

// 이것이 될 것입니다 당신의 파일 이름

그리고 이것은 취약한 코드 샘플입니다 예, 복사되었습니다 페이스 북 팀에서 예 그리고 시나리오 번호 9 그럼, 또한 전체 내용 및 파일 이름

PHP 라이브러리라는 펑크가 있습니다 PHP-GD 그래서, 개발자로서, 나는 파일 업로드가 JPG로만 파일 이름을 가지고 있지만 내용도 JPG입니다 그래서, 어떤 개발자는 이미지 리사이즈 또는 PHP 함수 호출을 PHP 함수에 전달하고자합니다 같은,하지만 그들은 주로 PHP는 – GD 일에 따라 변환하는 업로드 된 파일을 이미지 파일에 업로드하면 파일을 JPG 파일입니다

그들은 악의적 인 내용을 업로드하지 않도록하고 싶습니다 내용을 파일 자체에 저장합니다 예 그 놈이 여기 멋진 물건을 만들었 어 이것에 대해

이것은 "책 신선한"이라는 웹 사이트의 취약점이었습니다 네 그래서 그것을 우회하는 방법? 이미지 파일을 동일한 정확한 개발자 설정 따라서 PHP 코드를 로컬 서버 또는 뭔가 그런 다음 JPG 파일을 일반 JPG 파일을 선택한 다음 해당 파일의 변경 내용을 확인합니다 그래서, 어떻게 했어? 후

변환 중입니다 이전 파일과의 유사점은 무엇입니까? 그리고 새로운 파일, 왜냐하면 무언가와 JPG 자체가 대체 될 수 없었기 때문에, 권리? 예를 들어 공격자가 업로드 또는 삽입하는 것을 보았 기 때문에 메타 데이터 내부의 PHP 코드도 추적됩니다 이 PHP-GD는 이미지 내부에 메타 데이터가 존재하지 않도록합니다 따라서,이 작업을 우회하려면 16 진수를 사용하여이 작업을 수행 할 수 있습니다 사실은

그래서 이미지를 JPG로 변환하고 있습니다 PHP-GD를 사용하는 것과 같습니다 의회 이제 JPG 파일 두 개, 이전 파일과 JPG, 새 파일 인 JPG가 있습니다 개종했습니다

그는 두 가지 모두를 16 진수로 변환 한 다음 검색을 시작합니다 유사점 페이로드와 유사한 유사성 예를 들어, 페이로드가 20 자와 같은 경우 20 개를 찾아야합니다 문자, 20 유사점 따라서 코드에서 20 비트 유사도로 다음과 같이 할 수 있습니다

PHP 컨텐츠로 대체하십시오 삽입하고 싶습니다 그런 다음 이미지가있는 페이지를 업로드하십시오 변환 될 때, 같은 비트가 거기에 남아있을 것이고 PHP 코드를 실행할 수 있습니다 이 스크린 샷과 같습니다 이것은 링크이거나 POC 파일로 이동할 수도 있습니다

그만큼 당신이 사용할 수있는 링크와 POC 파일은 실제로 중요하지 않습니다 SVG Facebook에서 4 만 달러를 샀던 사람에 대해 들어 본 적이 있습니까? 그것은 약간이었다 "이미지 매직 (image magic)"이라 불리는 도서관에서 악용됩니다 "Image magic"은 취약점이있었습니다 영향을받는 서버 나 "이미지"를 사용하는 서버가 실행될 때 코드를 실행할 수 있습니다 마술 "이라고 부르며 그 이미지를"비극적 인 이미지 "라고 부릅니다

그렇지 않았습니다 아무도 없었습니다 그 사람은 페이스 북에서 그것을 발견하고 40,000 달러를 얻을만큼 충분히 운이 좋았다 하나 네

따라서 코드 자체를 볼 수 있는지 잘 모르겠지만 나는 여기에서 이것을 극대화 할 수 없다 그러나 어쨌든, 그가 사용한 페이로드는 간단하게, 당신이 실행하는 것을 쓰고있을 때, 나는 말할 수있다 괜찮아 그래서, 그는 리눅스 '/'의 메인 디렉토리에있는 디렉토리 목록 '/'다음 도메인으로, 하위 도메인으로 자신의 도메인 이름으로 하위 도메인을 보냅니다 그래서, 이 경우 어떻게됩니까? 핵심은 모든 DNS 로그 작업을 수행하기 때문에 DNS 쿼리 먼저

따라서 DNS 쿼리가 공격자 서버로 이동하면 로그를 모니터링 할 수 있습니다 이제는 서버의 데이터가 무엇인지 알고 있습니다 파일, ETC / PASSWD 코드의 내용은 무엇입니까? 그것 하지만 아시다시피 도메인 이름의 최대 크기는 64입니다 따라서 할 수 없습니다 따라서 64 비트를 16 진수로 변환하거나 Base64와 같이 변환 할 수 있습니다

각 요청에 대해 64 바이트를 보내는 동일한 시작 네 그래서 그 남자는 좋은 페이 스북 서버에서 명령을 실행합니다 네 시나리오 번호 11

이것은 모든 해커 또는 모든 오래된 학교와 같습니다 IIS 버전 6 및 65의 사용자 7이 작동하는지 여부는 확실하지 않지만, 왜냐하면 내가 그렇게하지 않았기 때문입니다 7 따라서 파일 이름을 ASPX로 업로드 할 수 있습니다

ASPX : 1JPG 그래서,이 일은 어떻게 될까요? 케이스? IIS 서버, 서버 자체가 다음 첫 번째 실행합니다 신장 그러나 개발자 코드는 항상 마지막 확장자에서 유효성을 검사합니다 그러나 거기 구분 기호입니다

구분 기호는 ':'입니다 그래서 IIS는 IIS가 ':'를 볼 때 거의 실행 된 FRX가 첫 번째 확장 프로그램입니다 첫 번째 명령 만 실행합니다 신장 그래서,이 경우 어떻게됩니까? 즉, 파일을 검증하는 개발자 그가 원하는 파일 이름이 같기 때문에 이름이 만족됩니다

웹 서버 자체가 첫 번째 확장을 실행합니다 그래서, 그 공격자도 만족, 이것이 실행되고 있기 때문입니다 더 이상 작동하지 않습니다 나는 아무도 IIS 6 또는 65를 사용하지 않는 것처럼 말입니다

하지만 내가 말했듯이, 나는 모든 것을 갖기를 기대하고있다 한 곳에서 가능한 기술 그래서 나는 옛 학교에 대해서도 이것을 언급했다 해커 물론 DOS

그것은 파일 크기 유효성 검사의 일부였습니다 그래서, 개발자가 거의 모든 것을 검증한다고 가정 해 봅시다 업로드 할 수 없습니다 악의적 인 파일, 디렉토리 트래버 설을 할 수 없으며, 자신을 우회 할 수 없다 파일 이름에 대한 유효성 검사가 가능하지만 여전히 파일의 가능성이 있습니다

크기가 확인되지 않습니다 그래서, 업로드 할 수 있다면 100 개의 요청을 보내고, 백 업로드 요청 및 각 파일은 20MB와 같습니다 이 서버는 DOS가 될 것입니다 모두 서비스 거부 공격입니다 그래서, 그것은 여전히 ​​가능성이 있습니다

개발자는 파일 업로드 크기의 유효성을 검사해야하며 네 그리고 나서, 시나리오 11, 그저 돌아온 것과 같습니다 승인 WordPress의 마법의 숫자 플러그인에서 뭔가를 가리 키려면 페이지, 너, 너, 미안, 이미지 업로드, 페이지 업로드 중

파일을 업로드 한 경우 PHP는 여전히 파일이지만 이미지에 마법 번호가 포함되어 있습니다 예를 들어, GIF 이미지에서 GIF와 같은 것입니다 98 죄송합니다 89 또는 87을 입력하고 ':'다음 일반 PHP 콘텐츠를 입력하십시오 PHP는 그 당시에는 WordPress를 사용 했었지만 그 당시에는 파일 내용 만 검증하고 있었고, 이 코드는 어쨌든 작동하도록 이미징됩니다

그리고 나서, 매직 넘버 이 마법 번호를 PHP 코드에 삽입하여 우회 할 수도 있습니다 또한 RCE의 zip 파일을 통해 그래서 페이스 북에서도이 사이트를 시도 할 때 정상적인 운영 체제 명령 인 파일을 압축 해제합니다 이상해 네

시나리오 14 당신이 할 수 있다면 잘 모르겠다 속도 태깅에서 페이로드를 확인 하시겠습니까? 그래서,이 경우, 나는 시나리오, 내가 테스트 한 웹 사이트에서 묻고있는 시나리오 사용자가 직업을 신청할 수 있습니다 그래서, 그들의 웹 사이트 또는 무엇인가 그렇게, 그들은 묻고있다 당신은 CV를 업로드 할 수 있습니다

하지만 업로드 한 파일이나 시도하려는 파일 업로드가 파일 이름의 유효성을 검사하지 않습니다 방금 데이터베이스에 삽입되었습니다 그 자체로 파일 이름 자체는 검증되지 않습니다 따라서 파일이 삽입 된 경우 다시 데이터베이스에 직접 들어가면 두 번째 주사를 할 수 있습니다 맞습니까? 하지만 너는 이것은 데이터베이스 측에 저장된 것이기 때문에 출력을 볼 수 없습니다

HR 직원과 같은 사람 또는 누구나 볼 수 있습니다 출력을 볼 수 없습니다 이 때 시간이 흐르면 ​​"대역 외 (out-of-band)"보안 주입이라고하는 것을 사용해야합니다 뭐 "out-of-band"안전한 주입은 무엇입니까? 너는 보통처럼 요청,이 경우 정상 요청은 요청해야합니다 외부 파일은 귀하가 관리합니다

따라서 개발자, 예를 들어 X가 실행되면 코드가 실행되고 일부 HR 담당자는 다음과 같습니다 이 메시지는 서버 로그에서 정상적인 요청으로 간주됩니다 그래서, 이제 우리가 작성한 SQL 명령이 실행되었음을 알게되었습니다 그러나 이것은 단지 SQL Server 및 aspnet에서만 작동합니다

불행히도 PHP에서는 작동하지 않습니다 및 MySQL 예, 이것이 마지막 기술입니다 "십자가 도메인 데이터 하이재킹 (hijacking) "또는"크로스 사이트 데이터 하이재킹 (cross site data hijacking) "등이 있습니다 그래서

이 경우 우리는 플래시 파일을 이용하고 있습니다 파일 그래서, 왜 플래시 파일입니까? 네, 이름을 바꿀 수 있다면 PDF, JPG 또는 확장명이 허용되는 것과 같은 플래시 파일 그리고 파일 내용 자체, 웹 서버를 기반으로 파일을 업로드합니다 주문 했어, 알았어, 알았어

웹 브라우저는 실제로 사이에 무엇이든 실행하는 것을 좋아합니다 플래시 파일과 마찬가지로 일반 객체 태그입니다 예를 들어,이 페이로드입니다 만약 너라면 이 태그 안에 언로드 된 플래시 파일이나 JPG 파일을 넣으면 객체 태그가 실행되지 않으면 일반 플래시 파일로 실행됩니다 사용 당신이 그것을 제어 할 수 있기 때문에 플래시 파일, 당신은 크로스 도메인 요청을 할 수있는, 권리? 교차 할 수 있으며 교차 도메인 요청을 제어 할 수 있습니다

플래시 그것은 항상 같은 스트라이크와 같습니다 : 허용 된 모든 것, 모두 허용하는 것 태만 네, 이제 우리는 이것을 URL과 함께 할 것입니다 POC 파일 그리고 지금, 개발자들을위한 결론

당신이 할 수있는 일은 무엇입니까? 이 모든 우회 기술을 완화하거나 유효성 검사를 우회 할 수 있습니까? 그래, 우선, 나는 그것을 좋아한다 사실, CDN 콘텐츠 전송 네트워크를 사용할 때 콘텐츠 배달 네트워크, 정말, 캐시에만 모든 콘텐츠의 캐시, 같은 JS 파일, CSS 파일은 일반적인 파일을 캐싱하고 실행할 수있는 것처럼 말합니다 하지만 그들은 기본적으로 PHP 나 HTML과 같은 내용을 실행합니다 실행 파일을 무시하십시오 항상 가장 먼저 파일을 만드는 것입니다

다운로드 가능하며 실행 가능하지 않습니다 그래서, "content position"이라는 헤더가 있습니다 이 헤더를 사용하여 예를 들어 당신은 브라우저가 항상 실행 불가능한 파일을 다운로드하도록 요청할 수 있습니다 따라서 파일이 다운로드되고 있기 때문에 대부분의 공격에 안전합니다 실행되지 않으면 PHP 코드가 실행되지 않습니다

그래서, 당신은 대부분 안전합니다 또한 파일 크기를 항상 확인하십시오 왜냐하면 물론 당신이 원하지 않기 때문입니다 귀하의 사이트에 대한 DoS 공격처럼 느껴지십시오 또 다른 좋은 기술은 – 거의 업로드 된 파일의 이름을 바꿉니다

그래서, 파일 이름이 무엇이든간에; 너는해야한다 신경 쓰지 마세요 무작위로 파일 이름을 바꾸면됩니다 허용 된 확장자를 파일 끝에 추가하십시오 그래서 이것이 PHP이고 그것이 어떻게 든 우회 되었더라도 여전히 무대입니다

JPG로 이름을 바꾸고 임의의 파일처럼 만들면 공격자가되지 않습니다 그것을 붙잡을 수 있습니다 그리고 그것을 잡으면 여전히 JPG 파일입니다 맞습니까? 예 그것들은 개발자를위한 조언입니다

바라건대, 너희들, 이거 좋아 그리고 우크라이나 사람을 읽는 사람들은 내가 생각하기에, 당신은 내가 무엇인지 이해할 것입니다 여기에 [음악]

[#15] Verbindung zu einer Oracle DB mit PHP

안녕하세요! 지금까지는 항상 PDO를 통해 MySQL 데이터베이스에 연결했습니다 오늘 저는 Oracle 데이터베이스에 연결한다는 사실을 알려 드리고자합니다

할 수 있습니다 연락 양식에 대한 예가 있습니다 다시 너 볼거야 기본적으로 차이점은 거의 없습니다

이제 폴더는 "Kontakt_Formular_Oracle"이라고합니다 나는 그 파일부터 시작하고 싶다 "Inc의 / db_connectphp" 여기서는 PDO 변형에서 데이터베이스에 대한 연결을 설정했습니다

이제이 파일을 사용하여 액세스 데이터를 중앙 집중식으로 정의합니다 여기에는 네 가지 변수가 있습니다 : 사용자, 암호, SID 및 문자 집합 이 파일 require () 함수를 사용하여 인덱스에 포함됩니다 이 아래에서 나는 함수와 실제 연결을 만든다 oci_connect () on

사용자 데이터는 앞서 언급 한 파일에서 가져온 것입니다 아래 연결 오류의 경우 오류 메시지를 표시합니다 아웃 여기에 호출 부호가있다 "아닙니다"와 같은 것을 의미합니다

따라서 연결이없는 경우 변수 "e" 해당 오류 여기 내려 줘 이 구문을 여기에서 반복해서 복사 할 수 있습니다 파일에 데이터베이스 연결이 필요합니다 연결 후 다음 구문이 매우 비슷하다는 것을 알 수 있습니다 PDO가 있습니다

먼저 변수가 다시 만들어지고 해당 변수와 함께 양식에서 채워진 내용 PDO의 prepare () 명령은 oci_parse ()라고하며, bindValue () 및 bindParam ()이 oci_bind_by_name ()이됩니다 execute () 함수는 이제 oci_execute ()라고 부릅니다 유일한 차이점은 오라클 철자법이 매우 PDO는 객체 지향이지만 절차 적으로 보인다 내가 다른 곳에서 설명하는 정확한 차이

PDO 표기법을 다시 살펴 보겠습니다 여기에 함수가있다 클래스에 속한 객체들 객체는 클래스의 인스턴스입니다 객체의 기능 객체 연산자로 호출됩니다 이것이 여기에있는 "->"입니다

프로 시저 스타일은 함수를 하나씩 처리합니다 이를 위해 어떤 객체도 필요하지 않습니다 게다가 SQL 쿼리가 약간 변경되었습니다 비교를 위해 MySQL 쿼리를 다시 추가했습니다 이것은 Oracle Query입니다

MySQL 데이터베이스에는 자동 증가 기능이 있습니다 이렇게하면 숫자를 입력 한 후 기본 숫자 키가 자동으로 설정됩니다 1로 레코드를 삽입하십시오 또한 증가라고합니다 N_ID 열이 MySQL 변종에 지정되지 않은 이유는 의지 값이 자동으로 증가 되었기 때문입니다

Oracle은이 기능을 알지 못합니다 그래서 N_ID 열을 명시 적으로 지정해야합니다 오라클은 소위 시퀀스를 사용합니다 내 시퀀스가 ​​호출됩니다 seq_tbl_kontaktformular 기본 키의 이름 : N_ID

그 뒤에 점과 "nextval"이라는 키워드가옵니다 "다음 가치"란 무엇입니까? 삽입 쿼리에 대한 시퀀스의 다음으로 높은 값이됩니다 통과시켰다 조만간 시퀀스를 만들어야합니다 날짜 더 이상 데이터베이스에 넘겨주지 않습니다

자동으로 현재 날짜가되도록 테이블을 생성 할 것이므로 저장됩니다 oci_bind_by_name 함수로 PHP 변수를 전달한 후 이, 그녀에게 질의를한다 oci_execute ()와 함께 그런 다음 $ stmt 변수의 잠금을 해제 할 수 있습니다 oci_free_statement ()와 함께 여기서는 선택 사항으로 간주 할 것입니다

다음 단계에서 데이터베이스 연결은 oci_close ()를 통해 닫힙니다 가장 최근에 $ stmt 변수를 릴리스해야합니다 아래의 다른 쿼리에서 다시 사용하고 싶습니다 모든 종류의 쿼리에 대해이 전체 구문을 사용할 수 있습니다 매개 변수가 필요없는 경우 (예 : 순수 매개 변수) "SELECT * FROM

"쿼리 oci_bind_by_name 함수를 그냥 둡니다 이제 원본 텍스트의 구문에 대해 확인하십시오 이것은 각 웹 서버에 복사해야합니다

나는 자유 프로그램 "fileZilla"를 사용한다 파일 -> 서버 관리자 아래에 저장된 연결 데이터가 있습니다 "새 서버"정보 연결 데이터를 입력 할 수 있습니까? 그런 다음 "확인"을 통해 닫습니다 위 왼쪽에는 저장된 항목이 표시되고 연결을 클릭하십시오 드래그 앤 드롭으로 서버의 전체 폴더를 드래그 할 수 있습니다

모든 파일이 복사되면 브라우저를 통해 문의 양식에 도달 할 수 있습니다 그래서 완벽 해 그건 이미 작동합니다 데이터베이스가 누락되었습니다 Oracle 서버와 웹 서버가 VPN 연결을 통해 있습니다

달성 나는 이미 연결되어있다 오라클 서버는 대부분 대기업에서 사용되지만 많은 기업에서도 사용됩니다 칼리지와 대학은 학업 목적으로 오라클의 입학 허가를 제공합니다 데이터베이스와 시퀀스를 생성하려면 "Oracle Developer"를 엽니 다

현재 버전 412를 사용합니다 인터넷에서 버전을 다운로드 할 수 있습니다 다시 말하지만, 이미 연결 데이터를 저장했습니다

새 연결 데이터를 입력하려면 여기를 클릭하십시오 더하기 기호 연결에 이름을 지정할 수도 있습니다 모든 액세스 데이터를 입력 한 경우 당신은 아래의 연결을 테스트 할 수 있습니다 모든 것이 작동하면 "저장"을 클릭하십시오

나는 지금 연결되어있다 주변을 직접 둘러 볼 수 있습니다 SQL 명령을 실행하십시오 "SELECT * FROM v $ Versioin"을 사용하면 Oracle 서버를 표시하십시오 그래서 우리는 "Database 12c Enterprise Edition"을 여기에 가지고 있습니다

좋습니다 단, 추가 정보로 전달해야합니다 테이블이 여기에 테이블 폴더에 표시됩니다 지금은 테이블이 없습니다 그게 바로 제가 새 것을 입을 이유입니다

오른쪽 클릭에 관하여 -> "새 테이블" 첫째, 나는 테이블의 이름을 용서합니다 "Tbl_Kontaktformular" 총 5 열이 필요합니다 여기서 MySQL 데이터베이스의 이름과 데이터 유형을 다시 볼 수 있습니다

데이터 유형은 Oracle에서 다른 것으로 불립니다 동영상 설명에있는 데이터 유형에 대한 링크를 찾을 수 있습니다 오라클 데이터베이스 데이터 유형을 지정하려면 위의 "고급"을 클릭하십시오 나는 그들의 이름에 칼럼을 쓴다 및 데이터 유형 "not null"로 설정하십시오

내가 말한 날짜는 내가 표준이라고 말했어 "CURRENT_TIMESTAMP" 현재 날짜와 시간은 항상 삽입 지점에 삽입됩니다 이제 기본 키 N_ID를 선택합니다 화살표를 사용하여 하나 이상의 열을 선택할 수 있습니다 내가 원한다면 여기에서도 이름을 바꿀 수있어

하지만 그대로두고 "OK"로 확인하십시오 보시다시피, 테이블이 여기에 만들어졌습니다 기본 표준 나는 테이블의 구조를 본다 내용을보고 싶으면 탭 "데이터"를 선택합니다 지금은 여전히 ​​비어 있습니다

우리가 아직 부족한 마지막 것 시퀀스입니다 내가 만들거야 "Sequences"를 마우스 오른쪽 버튼으로 클릭하고 "New Sequence"라고 말하십시오 나는 그 이름을 용서한다 이미 SQL 쿼리에 표시했습니다

seq_tbl_ kontaktformular_ 꾸벅 꾸벅 나는 1 번부터 시작한다 1 씩 증가, 내 최소값은 1입니다 내 최대 가치 여기가 이거 야 마지막에 "OK"를 눌러 확인하십시오

좋습니다 해보자 "귀하의 메시지가 성공적으로 저장되었습니다" 좋아 보인다 이 기호에 대하여 새로 고침 (새로 고침) 할 수 있습니까? 내 데이터가 도착했습니다 완벽한 모든 작품 🙂 보시다시피, 그 차이는 심각하지 않습니다

그러나 밖으로 볼 것이다 몇몇 미묘가있다 다음 비디오에서는 데이터베이스 및 테이블을 만드는 방법을 설명합니다 MySQL 또는 Oracle SQL 명령 다음에 봐요!

PHP Conexión a  MySQL y HTML5 #15

안녕하세요, 저는 Alex이며이 비디오 자습서에 있습니다 계속합시다

우리 프로젝트와 함께 PHP에서는 이제 버튼에 기능을 추가 할 것입니다 세부 사항 정보로 세부 정보를 표시합니다 우리 연락처에서 이제 텍스트 편집기로 이동합니다 우리는 우리 프로젝트를 찾는다 우리는 파일을 검색하여 데이터를 검색합니다

PHP 세부 정보 버튼이있는 곳으로갑니다 여기에 우리 버튼이있는 형태로 세부 사항 우리는 의견을 가지고있다 여기에서 연락처 ID를 캡처합니다 숨겨진 유형 지금 숨겨진 단어를 제거하면 우리는 우리 페이지로 간다 보시다시피 입력이 표시됩니다

각 연락처의 이드를 보여줍니다 우리가 할 일은이 연락처의 이드를 잡는 것입니다 우편으로 보내 세부 정보 페이지로 PHP 형태로 행동하다 우리는 우리가 세부 사항을 가지고 있는지 확인합니다 PHP 우리가 게시하는 방법에서 이제는 계속됩니다

이 세부 파일을 작성하십시오 PHP 우리는 그것을 지킨다 세부 사항 PHP 이제 우리는 PHP 태그를 생성 할 파일 내부에 이제 연결 파일을 보냅니다 이제 html 태그를 만들어 보겠습니다 우리는 파일을 보내기 위해 보낸다

stylecss 지금은 몸 안에 있어요 우리는 헤더 태그를 넣는다 레이블 안쪽에 img 태그를 넣고 관리자 이미지가있는 주소를 넣으십시오 PNG 이제 레이블을 만들어 보겠습니다

내부 라벨 중앙 스티커 우리가 양식을 만들려고하는 라벨 안에 우리가 취할 행동에 제거하다 PHP 방법 우편으로 우리는 어떻게 이드를 없앨까요? 이제 유형 입력을 만듭니다 숨겨진 가치 우리는 라벨을 붙인다 PHP 레이블 안에 echo를두고 변수를 배치합니다 이드 닫힌 따옴표 안에 PHP 태그 우리는 이름을 넣을 것이다 이드 이제 submit 유형의 또 다른 입력을 만들어 보겠습니다

우리는 수업을 들어야합니다 엉덩이 가치 제거하다 이름 제거하다 PHP 태그에 지금 여기에 게시물로 오는 이드를 캡처하자 우리는 id라는 변수를 만듭니다 우리는 게시물 우리는 이드와 여기에 우리가 이드를 잡으러 갈거야 페이지 검색 데이터에서 온 것입니다 PHP 지금 nav의 바깥쪽에 컨테이너 섹션을 만들어 보겠습니다

라벨 안쪽에 라벨 센터를 만들 것입니다 그리고 라벨 안쪽에 컨테이너 클래스를 만드는 div를 만들 것입니다 컨테이너 div 컨테이너 섹션은 ID가 다르므로 컨테이너 섹션은 매우 다릅니다 컨테이너 div에는 컨테이너 클래스가 있습니다 지금 div 안에 우리는 PHP 태그를 만든다

이제 데이터베이스에 대한 쿼리를 생성 해 봅시다 데이터 테이블에 우리는 쿼리를 만들어 쿼리라는 변수를 만듭니다 우리는 mysql 쿼리를 넣는다 괄호 안에 쿼리를 만든다 선택 데이터 어디서? 언제? 이드는 데이터베이스에 무엇이 있는가? 평등하다 우편으로 오는 이드에 대한 작은 따옴표 데이터베이스에있는 ID가 같은 경우 우편으로 오는 이드에게 우리에게 보여줄거야

그 ID에 해당하는 모든 데이터 우편으로 온다 이제 데이터 테이블의 모든 데이터를 탐색하는 동안 괄호 안에 행 변수를 만들어 보겠습니다 그것은 mysql 페치 배열과 동일 할 것이다 괄호 안에 쿼리 변수를 배치합니다 이제 데이터 행을 만들자

변수 id를 두자 그것은 동일 할 것이다 행 변수에 이드를 넣은 괄호 안쪽에 우리가 할 일은 우리가 쳤던 우리는 그것을 바꿨다 이미지 이름으로 성 섹스 텔셀 이메일 데이트 우리는 그를 직업으로 삼았습니다 대괄호 안에있는 이름은 테이블 데이터에있는 필드의 이름입니다

그들은 현장에있는 그대로 쓰지 않으면 안된다 데이터 테이블 이후 테이블 데이터와 직업 분야에서 나는 그것을 가지고있다 여기에 괄호 안에 나는 그것을 그대로 써야한다 데이터 테이블의 필드와 다른 방식으로 데이터를 배치하면 그들은 데이터를 보여주지 않을 것입니다 라벨을 벗어났다

센터 태그를 만들어 보겠습니다 태그 안에는 div라는 div가 생성됩니다 단일 상자 div 안에 h4 태그를 만들 것입니다 태그 안에 php 태그 우리는 에코를 넣는다 이름 변수를 배치합니다

연락처 이름을 보여줍니다 이제 img 태그 우리는 PHP 태그를 넣는다 우리는 에코를 넣는다 연락처의 이미지를 보여주기 위해 이미지 변수를 배치합니다 이제 우리는 따옴표로 닫습니다

우리는 그 이미지에 너비를 넣을 것입니다 of 280 높이 250 우리 모두 이드의 혼자서 그게 다야 지금 div에서 클래스 상자 des와 함께 다른 div를 만들어 보겠습니다 우리는 h3 우리는 당신을 제목 설명으로 둔다 이제 h4를 만들어 보겠습니다

우리는 PHP 태그를 넣는다 반향 이름 우리는 연결하다 우리는 이름 변수를 넣어 그 이름을 보여줍니다 이제 우리가 무엇을 할 것인가는 우리는 그것을 붙인다 우리는 성으로 그것을 바꿨다 섹스 텔셀 이메일 데이트 직업 이제 우리가 할 수있는 한 번 우리 연락처의 정보를 시각화하다

우리는 양식을 준비한다 정보를 수집하고 편집하기 우리는 양식을 만든다 행동으로 우리는 당신에게 판을 줄 것이다 PHP 방법 우편으로 이제 정보를 캡처하기 위해 숨겨진 형식 입력을 만듭니다

우리는 가치를 부여한다 우리는 PHP 태그를 넣는다 에코 내부 변수를 배치합니다 이드 우리는 따옴표로 닫는다 이름 우리는 이드를두고 이제 우리는이 동일한 입력을 복사합니다

우리는 그것을 이미지로 바꿨다 우리는 그것을 이름으로 바꾼다 성 텔셀 섹스 이메일 데이트 직업 우리는 이미 데이터를 포착하는 양식을 준비했습니다 우리 연락처에서 우편으로 보내려면 에디션 파일로 이제 페이지 세부 사항을 이미 완료했습니다 PHP는 이제 브라우저로 간다

이것이 우리는 업데이트 이제 연락처를 선택합니다 세부 정보 버튼을 누릅니다 보시다시피, 우리에게 정보를 보여줍니다 우리 연락처 삭제 버튼이 표시됩니다 그러나 우리는 우리의 이미지에 문제가있다

연락처 이미지가 우리에게 보이지 않습니다 이미지가 우리에게 나타나지 않는 이유를 알아보기 위해 탐욕스런 사람들을 살펴 보겠습니다 우리가 선택한 연락처의 우리가 어디로 간다 이미지가 우리에게 보여주는 img 태그 여기 좋네 변수에 이미지 우리가 할 일은 그들이있는 곳에 주소를 두는 것입니다

우리의 이미지 장소 따옴표 2 점 / 사진이라는 폴더 / 변수와 연결 한 따옴표 바깥 쪽 이제 브라우저로 가서 이것이 오류인지 확인합니다 우리는 업데이트 이미 이미지가 나에게 보여진다 우리가 선택한 연락처의 이제 다른 연락처를 선택합시다 올바른 정보와 이름을 보여줍니다 이 연락처 이제 우리는 편집장에게 간다

우리가 정보를 포착하는지 봅시다 양식 우리는 숨겨진 어떻게 보는지 그들은 숨겨진 필드이기 때문에 이제 브라우저로 이동하여 업데이트합니다 우리가 우리를 붙잡고있는 분야가 정확하다 우리 연락처 정보 편집 페이지로 이동하여 정보를 편집 할 준비가되었습니다 또는 버튼을 놓는 것을 잊어 버렸습니다

편집하다 여기서 정보는 우리에게 양식을 보여줍니다 마지막 입력 후에 센터 태그를 넣습니다 라벨 안에는 입력을 넣습니다 buttom 클래스를 사용하여 제출하는 유형의 가치있는 우리는 당신을 이제 우리는 업데이트 지금은 편집 버튼을 보여줍니다 좋은 친구는이 비디오 튜토리얼을 위해 모든 것이 었습니다

우리는 이미 세부 버튼에 기능을 부여했습니다 누가 우리에게 세부 사항을 보낸다 PHP와 우리에게 이미지를 보여 우리가 선택한 연락처 정보 및 삭제 버튼 레코드를 삭제하는 방법 우리가 선택한 버튼과 편집 버튼 우리 연락처의 정보를 수정하는 다음 비디오 튜토리얼에서 우리는 당신에게 스타일을 줄 것이다 이 세부 페이지로 다음 비디오까지 뵈요 bye

PHP sistema de encuesta con MySQL y HTML5 #15

안녕하세요, PHP에서 우리 프로젝트의 개발을 계속합시다 우리의 설문 조사 시스템 이제는 설문 조사 어떻게 투표 투표 파일을 만들어야합니까? 둘 PHP 이제 파일이있는 디렉토리로 이동합니다

설문 조사 프로젝트 투표 투표 결과를 어떻게 볼 수 있습니까? 우리가 할 일은 우리는 이름을 짓는다 우리는 당신 투표 설문 조사 두 나 또한 ico 유형 파일을 만들었다는 것을 어떻게 알 수 있습니까? 및 아이콘 48 x 48 크기 이제 우리는 숭고한 본문으로갑니다 우리는 우리 프로젝트를 찾는다 우리는 투표 투표 투표 2 파일을 검색합니다 이 파일에서 우리가 할 일은 게시물로 올 변수를 제거하는 것입니다

이제는 계속 될 것입니다 수정하다 쿼리 지난 조사의 정보를 선택하려고합니다 삽입 된 쿼리 조사표쪽으로 날짜별로 주문 해 우리는 날짜 필드 아주 좋아 이 방법으로 우리는 마지막 조사를 포착합니다

데이터베이스에 삽입 됨 아주 잘 이것은 모든 수정이었다 투표 투표 파일에 둘 PHP 이제 우리는 브라우저로 간다 우리는 업데이트 아주 잘 나에게 최신 설문 조사를 보여주고있다 삽입 된 그가 삽입 한 마지막 설문 조사는 PHP였습니다

우리는 투표를 할 수 있습니다 우리는 투표했다 아주 좋아 이제 우리는 당신에게 보여줍니다 잘 그것은 나에게 보이지 않는 오류가있는 것 같다

측량 그래프 코드를 살펴 보겠습니다 실수를 잘한다 내가 그 동안에 있었어 변수를 배치해야합니다 선택 삽입 된 마지막 설문 조사의 ID를 캡처 지금 아주 좋아

우리는 다시 시도한다 우리는 대답을 잘 선택한다 지금 참조 나 한테 이미 보여주고있어 최신 설문 조사 데이터베이스에 삽입되고 나에게 보여주고있다 그 그래픽 내가 가진 좋은 착한 일이야

내가 자리에 있어야 할 동안 나는 그것을 가지고 있었다 옵션 변수 이드를 붙잡고 마지막 조사가 삽입 됨 이제 우리는 파일을 찾는다 헤더 이제 다음 링크를 넣으십시오 이제 나는 이름을 넣을 것이다 내 아이콘의 점 ico 이제 우리는 확인한다

우리는 업데이트 그들이 보는 모습이 아주 잘 사라졌습니다 아이콘 xampp에서 내가 만든 아이콘이 나타납니다 홈 페이지로 가자 아주 좋아 아주 잘 우리는 우리 아이콘을 가지고있다

우리 프로젝트에서 좋은 친구가 비디오 튜토리얼에서이 모든 것을했습니다 우리는 끝냈다 설문 조사 프로젝트 PHP로 우리는 시작했다 설문 조사를 참조하십시오 우리가 삽입 한 대답하다 마지막으로 삽입 된 설문 조사까지 우리의 로그인 섹션 시작 설문 조사 만들기 네가 이걸 좋아했으면 좋겠어

PHP에서 작은 설문 조사 프로젝트 너를 봐 다음 동영상까지 안녕

PHP For loop, Foreach Loop – PHP Tutorial – 15

PHP 루프에서 for 루프는 반복 또는 반복을 의미합니다 지정된 횟수 동안 반복해서 코드 블록을 실행하려고합니다

for 루프는 코드를 실행하는 데 걸리는 시간을 알고있을 때 사용됩니다 for 루프 초기화 카운터, 첫 번째 카운터 증가 PHP의 카운터에는 foreach 루프가 있습니다이 루프는 배열에만 사용됩니다 집단 그것은 각 키를 통해 반복하기 위해 사용되었으며 값 쌍은 이제 for 및 foreach 루프 예제 어도비 드림위버 또는 다른 편집기를 시작하고 새로운 PHP 파일을 만듭니다 이제 여기에 for 루프를 작성하고 loop에 값을 지정합니다

우리는 $ a를 변수 for 루프의 루프에는 세 개의 매개 변수 counter first counter 카운터를 구현하여 카운터를 선언 한 후 조건을 지정하십시오 카운터 다음 증분 및 감소 카운터를 사용하여 여기에 $ a를 선언합니다 값이 1이고 $ a가 10보다 작은 지 확인하십시오 그러면 $ a ++ 이제 중괄호를 시작하고 $ a를 인쇄하십시오 지금이 파일을 저장하고 이것을 실행하십시오

예 루프가 성공적으로 실행되었습니다 그래서이 예제를 통해 PHP for for loop에 대해 배울 수 있습니다 이제는 각 루프에 대해 사용합니다 foreach 루프는 각 키를 통해 사용 된 배열 요소에만 사용됩니다 값 쌍은 변수를 선언하고 값을 할당합니다

여기 우리는 변수 이름 과일을 가져다가 망고 사과를 3 가지 값으로 할당합니다 오렌지는 이제 foreach 루프를 사용하고 키와 값 쌍을 사용합니다 여기서는 과일을 사용합니다 변수를 키로 사용하고 $ value 변수를 키 값으로 사용하여 $ value를 출력합니다 이 파일을 저장하고 실행 예 모든 배열 변수가 성공적으로 인쇄되므로 PHP foreach 루프입니다

고맙습니다 다음 비디오 튜토리얼 15 번을보고 PHP 기능에 대해 알아보십시오 단계별

웹에플리케이션 만들기 – JS, PHP 프로그래밍 15 : UI, API

이번 시간에는 UI와 API라고 하는 주제에 대해서 알아보겠습니다 UI와 API라고 하는 이 개념은 여러분이 프로그래밍을 하는데 있어서도 상당히 유용한 개념이고 또 이 정보기술이 우리의 삶에 어떤 영향을 미치는가 라는 것을 이해하는데도 꽤나 유용한 인식의 틀을 제공하는 그런 개념이라고 할 수 있어서 제가 이 프로그래밍에 대한 기본적인 트레이닝을 끝낸 이 지점에서 이런 이야기를 좀 준비해봤습니다

UI라고 하는 것은 아마 들어본적 있는 분들이 많을 거예요 UI는 User Interface의 약자입니다 User는 사용자 라는 뜻이고요 Interface는 우리가 뒤에서 살펴볼 겁니다 그럼 API라는 것을 무엇일까요? API는 Application Programming Interface의 약자입니다 여기서 이야기하는 Application은 애플리케이션 앱, 프로그램 이렇게 불리는 것들을 이야기하는데요

다시 말해서, 어떤 프로그램이 어떤 프로그래밍 언어를 이용해서 무언가를 제어하려고 할 때 사용하는 그런 수단이라는 뜻인데 조금 뒤에 전체적인 의미를 알게될 것 입니다 그래서 이 UI라는 말과 API라는 말 좀 눈치가 빠르신 분들은 느꼈겠지만 뭔가 공통되는 부분도 있고, 다른 부분도 있었어요 우선 다른 부분은, 하나는 Application Programming이고, 하나는 User라고 하는 말의 약자라는 거죠 그리고 공통점은 둘 다 Interface라고 하는 뜻을 가지고 있습니다 그러면 이 공통 분모인 Interface라고 하는 것은 어떤 의미인지에 대해서 살펴볼까요? 이거는 좀 비유적인 표현인데 보통 이것을 Interface라고 하지는 않지만 사람과 사람이 서로 교류할 때 사용되는 가장 기본적인 도구, 기본적인 접점이 무엇일까요? 여러 가지가 있겠지만 언어이겠죠? 말이라고 하는 이 도구를 통해서 사람과 사람은 서로에 대한 정보를 주고받고 상대방에게 무언가를 요청하고, 뭐 이런 것들을 할 수가 있는 것 이죠 마찬가지로 이 위쪽에 있는 사람과 아래쪽에 있는 기계가 서로 소통하기 위한 서로 교류하기 위한 접점, 또는 그 접점에 해당되는 장치들이 있을 건데요 어떤 것이 있을까요? 이를테면 컴퓨터나 스마트폰은 전원버튼이 있어요 그 전원 버튼이 하는 역할은 이 시스템에게 "전원을 꺼라" 라는 것을 명령할 수 있는 채널인 것이죠 그리고 디스플레이라고 하는 것은 시스템의 상태를 사용자에게 알려주는 것이라고 할 수가 있습니다

바로 이러한 것들을 우리가 Interface라고 부르는 것이죠 그리고 이렇게 장치와 장치가 서로 소통하기 위한 접점에 존재하는 것으로는 이런 것을 들 수 있을 거에요 USB Interface 입니다 그리고 우리의 주제라고 할 수 있는 이런 웹 애플리케이션이 아래쪽에 있는 웹브라우저와 교류할 수 있는 접점들이 존재하는데 그 접점을 살펴보자는 거죠 이 코드는 우리가 이전에 JavaScript를 공부하면서 배웠던 코드입니다 즉, prompt 라고 하는 저 코드를 통해서 “비밀번호를 입력해주세요”라고 하는 메시지가 찍혀있는 프롬프트 창을 실행시키는 코드가 바로 아래쪽에 있는 코드이고, 그 코드의 결과가 위쪽에 있는 화면인 것이죠 이 화면이 위쪽에 있는 화면이 하는 역할은 무엇일까요? 사용자의 어떤 정보를 받아서 애플리케이션에게 전달하는 것이 바로 프롬프트 창이 하는 역할인 것이죠 그리고 저 프롬프트 창이 실행되기 위해서 우리가 웹브라우저에게 JavaScript의 문법에 따라서 전달한 코드가 바로 아래쪽에 있는 것 입니다 그래서 위쪽에 있는 이 사용자가 직접 조작하는 저것을 직접 조작하는 바로 저 Interface를 뭐라고 부르냐면 UI라고 부릅니다

User Interface 인 것이 고요 우리가 만든 웹애플리케이션이 프롬프트 창을 실행시키기 위해서 JavaScript의 문법에 따라서 웹브라우저에게 전달한 저 명령을 뭐라고 하냐면, API라고 하는 겁니다 애플리케이션이 무엇인가를 하기 위해서 프로그밍적으로 그 애플리케이션이 돌아가는 시스템에게 전달하는 명령, 그런 것들을 Application Programming Interface 라고 한다는 것이죠 이쯤에서 여러분들에게 뭐 하나 여쭈어볼게요 여기에 있는 이 프롬프트 창 우리가 만든 웹애플리케이션에서 실행된 저 프롬프트창은 여러분이 만든 것일까요? 아닐까요? 어떻게 생각하세요? 저 프롬프트 창을 여러분이 만든 것 일까요? 아니면 다른 무엇인가가 만든 것 일까요? 여기에 정답이 딱히 있다고 생각하진 않지만 만약에 저에게 물어봤다면, 저는 “제가 만들기도 했고, 제가 만들지 않기도 했습니다” 라고 이야기를 할 거 같아요 왜냐하면, 여기에 있는 “비밀번호를 입력해주세요”라고 하는 저 코드를 우리가 웹브라우저에게 제출했기 때문에 웹브라우저는 여기에 “비밀번호를 입력해주세요”라고 적어준거죠 그런 면에서는 우리가 만든거라고 할 수가 있습니다 그리고 이 prompt 라고 하는 명령은 프롬프트 창을 실행시키는 명령인데 바로 저 명령을 웹브라우저에게 제출했기 때문에 웹브라우저는 프롬프트 창을 실행시킨 것이죠 그렇게 본다면 이 창은 우리가 만든 것 이라고 할 수 있겠죠 그런데 여기 있는 이 코드에 엑스버튼(X)이 있으라는 내용이 들어있나요? 또는 버튼이 두 개 있어야 되고, 하나는 확인 하나는 취소라고 적혀있어야 된다는 내용이 이 코드상에 포함되어 있나요? 또는 이런 사용자의 입력을 받는 저런 창이 있어야 된다는 이야기가 여기에 한마디라도 언급된적이 있냐는 것이죠 그런 것을 언급한적도 없는데, 우리가 prompt라고 하는 이름에 명령을 내렸을 뿐인데 이런 화면이 뜨는 것은 결국에 이 프롬프트 창이 “우리가 만든게 아니기도하다

” 라는 것을 의미하는 거라고도 볼 수 있지 않을까요? 바로 그런 점에서 저 프롬프트 창은 기본적으로 우리가 만든 것이 아니라 누가 만든거냐면 웹브라우저가 미리 만들어놓고 준비하고 있는 것이라고 할 수 있습니다 그리고 우리는 이 prompt라고 하는 저 코드를 웹브라우저에게 실행함으로써 웹브라우저가 미리 만들어 놓은 저 프롬프트 창을 웹브라우저가 실행할 수 있도록 명령하고 있는 것이에요 바로 그런 점에서 저 prompt는 일종의 Interface인데 즉, 우리가 만드는 애플리케이션이 웹브라우저에게 무언가를 요청하는 Interface인데 바로 애플리케이션이 프로그래밍적으로 요청하는 Interface이기 때문에 이것을 API라고 부른다라는 것이죠 한 번에 이해가기 쉽지 않을 수 있습니다 그럼 이 관계를 조금 더 깊게 살펴볼까요? 여기보시는 것 처럼, 이 한 겹 한 겹의 판들이 여러 겹으로 쌓여있는 어떤 구조물 어떤 건물이 있다고 생각해보죠 그리고 각각의 층마다 무언가가 있는데 그 각각의 무언가들이 컴퓨터 또는 스마트폰 이런 것들을 구성하고 있는 구성요소라고 생각해보고 그것들을 우리가 한번 분해를 한번해보자는 거죠 그러면 가장 꼭대기에 뭐가있냐면 사용자가 시스템을 제어할 때 사용하는 이렇게 생긴 접점인 User Interface가 존재합니다 그리고 저 User Interface를 만든 것은 누구냐면 바로 우리가 만든 웹 애플리케이션이 prompt라는 명령을 웹브라우저에게 하달함으로써 프롬프트 창이 실행되게 된 것이죠 우리가 만든 것은 저 웹 애플리케이션을 만든겁니다 그런데 제가 앞서 말씀드린 것 처럼, 저 prompt라는 명령에 대응되는 실제 프롬프트 창을 만든 것은 바로 웹브라우저라고 말씀드렸고 그리고 동시에 웹브라우저 역시도 그 프롬프트 창을 혼자서 모든 것을 다 만든 것이 아니라 보시는 것처럼 이렇게 이런 버튼들 그리고 여기에 있는 입력을 받는 저런 텍스트 필트라고 하는 것 그리고 이렇게 생긴 소위 대화상자라고 하는 이런 것들 이런 것들은 웹브라우저가 직접 만든 것이 아니라 운영체제가 미리 만들어 놓고 웹브라우저가 그것을 API를 통해서 호출해서 프롬프트 창을 이렇게 저렇게 조립해서 만들게 되는 겁니다

즉, 프롬프트 창은 웹브라우저가 혼자 만드는 것이 아니라 운영체제가 제공하는 바로 저런 작은 부품들을 조립해서 만든 거라고 할 수 있어요 바로 그런 방법을 통해서 웹브라우저는 운영체제를 이용해서 만들게 됩니다 그렇다면 운영체제는 어떻게 만들까요? 여기서부터는 좀 불분명한 측면이 있지만 우리가 기술의 어떤 다칭성이라는 것을 설명드리기 위해서 제가 이야기하는 겁니다 엄밀한 이야기들은 아니라는거 참고적으로 알아두시고 제 이야기를 들으시면 좋겠습니다 이런 운영체제도 처음부터 뚝딱하고 하늘에서 만들어진 것이 아니겠죠? 바로 이런 C와 같은 언어들을 이용해서 우리가 운영체제를 만들게 됩니다

그리고 이러한 C와 같은 언어는 이것 역시도 처음부터 뚝딱 있었던 것이 아니라 어셈블리어라고 하는 아주 오래된 언어를 이용해서 C와 같은 프로그래밍 언어를 또 만들게 되는거죠 즉, 언어를 만드는 언어라는 뜻이에요 그리고 이 어셈블리어는 그것 보다도 더 기계에 가까운 바로 기계어라는 것에 의해서 만들어지거나 또는 대응된다라고 이야기할 수 가있는데요 우리가 기계어라는 것을 구체적으로 알지 못해도 컴퓨터라는 기계가 결국에는 0와 1로 이루어져 있다는 아주 유명한 얘기를 들어본적 있으시죠 바로 이것이 기계어라는 것이고, 기계어는 어떻게 보면 소프트웨어의 가장 깊은 곳에 있는 기술이라고 할 수가 있습니다 그래서 우리가 기계와 같은 기술을 로우레벨의 아주 아래쪽 레벨에 존재하는 기술이라고 해서 Low Level Technology 라고 합니다 그리고 우리가 지금 살펴본 이 이야기에서 가장 꼭대기에 있는 것, 위쪽에 있는 기술 일수록 High Level 고수준의 고급 기술이라는 표현을 쓰게돼요

아무튼 이렇게 해서 우리는 제일 위에 있는 UI부터 시작해서 점점 더 소프트웨어의 심연으로 내려오고 있는데요 그 가장 밑바닥에서 기계어를 걷어내면 무엇이 존재하냐면, 바로 전자공학의 표면을 만나게 됩니다 우리가 언뜻 들어본 듯한 CPU, RAM 바로 이러한 것들이 전자공학에서 만들어내는 그런 소위 하드웨어라고 하는거라고 할 수 있습니다 그리고 이 전자공학의 기본적인 메커니즘은 이 전기를 켜고, 끄고하는 것을 일종의 정보화시킨 거라고 할 수 있고 전기가 켜지고 꺼지고에 해당되는 것들을 소프트웨어, 즉 기계어에서는 0와 1이라고 하는 그 두 가지의 숫자로 대응을 시켜서 소프트웨어를 만들게 됩니다 물론 이과정은 상당히 복잡한 것이 기 때문에 우리 수업의 범위를 넘어서요

이해 못하셔도 아무 문제없는 이야기입니다 그리고 이 거대한 제가 한 장으로 표현했지만 굉장히 거대한 이 전자공학의 심연에서 전기공학을 만나게 되는 것이죠 전기공학이라는 것은 전기를 생산하고, 전기를 전송하고, 그것을 통해서 무엇인가 이 운동에너지로 바꾸는 이런 것들을 포괄하는 학문이라고 할 수 있겠죠 그리고 이 전기공학은 바로 물리학이라고 하는 곳에서 출발한 학문이라고 할 수가 있을 겁니다 어때요 우리가 무심코 사용하는 이런 스마트폰이나 또는 컴퓨터와 같은 기계는 결코 평면적인 기술이 아니라 지금 보시는 것 처럼 다칭적으로 다양한 레벨의 기술들이 협력해서 이런 시스템을 만들게 되는 것 이라는 거죠 그리고 각각의 한 장 한 장이 한 사람이 평생 노력해도 그 분야를 통달하기 어려울 만큼 방대한 내용을 담고 있다고 생각하면 이 컴퓨터라고 하는 것을 다른 시각으로 보게 되지 않나요? 그리고 각각의 층과 층 사이는 API, Application Programming Interface라는 것을 통해서 교류하고 있다는 것이죠

그것이 바로 API, 그리고 또 하나 우리는 UI라는 것도 같이 살펴보았습니다 지금까지 제가 말씀드린 이 API라는 개념을 통해서 제가 이야기하고 싶은 것은 오늘날 이 시대를 저는 이렇게도 이야기해 보고 싶다는 겁니다 API전성시대 이게 무슨 뜻인지 살펴볼까요? 과거에는 API를 제공하는 시스템이 운영체제에 정도가 있었어요 우리가 알고 있는 Unix, Linux 또는 Microsoft Windows 그리고 OSX 이러한 것들 운영체제라고 하는 이 거대한 기반 시스템들이 API를 유일하게 제공하고 있었기 때문에 어떤 소프트웨어를 만든다라는 것은 결국에 이러한 운영체제 위에서 직접적으로 돌아가는 애플리케이션 다른 말로는 프로그램을 만드는 거라고 할 수가 있었습니다

그런데 그 여러 수많은 프로그램 중에 특이점을 가지고 있는 독특한 프로그램이 하나생겼는데 무엇이냐 하면 웹브라우저라는 겁니다 이 웹브라우저라고 하는 것은 운영체제 입장에서는 그냥 일개 소프트웨어에 불과했어요 운영체제 위에서 동작하는 수 많은 소프트웨어 중 하나에 불과했습니다 그런데 이 웹브라우저는 운영체제 위에서 동작하는 하나의 애플리케이션이지만 동시에 스스로가 API를 가지고 있었기 때문에 웹브라우저 위에서 동작하는 수많은 웹 애플리케이션들이 등장하게 됐다는 것이죠 그것이 우리가 배우고 있는 이 수업의 대상이라고 할 수가 있겠죠

그런데 이 웹이라고 하는 것이 발전하는 과정에서 수많은 웹 애플리케이션들이 만들어졌는데 그 수많은 웹 애플리케이션들 중에서 무엇인가 좀 특이한 녀석들이 또한 등장하기 시작했다라는 것 입니다 바로 이 특이한 녀석들은 굉장히 많은 사람들이 사용하는 서비스들이고 그리고 무엇 보다도 중요한 특징은 마치 운영체제 처럼 또 웹브라우저 처럼 스스로 API를 제공하기 시작했다라는 겁니다 그래서 우리가 소위 페이스북 앱 또는 구글 플러스 앱 또는 트위터 앱 이러한 것들이 만들어졌다라는 것이죠 그래서 게임이라든지 여러 가지 기타 등등 다양한 애플리케이션들이 이런 웹사이트를 기반으로 해서 동작하게 되었다라는 것이죠 바로 이러한 변화에 의해서 API가 폭발적으로 증가하게 됩니다

그런데 여기서 끝이 아니에요 이것은 어떤 제가 PC를 중심으로 말씀드렸지만 PC뿐만 아니라 이후에 스마트폰이 등장하면서 스마트폰이라는 새로운 플랫폼이 또한 당연히 API를 제공했고 그 API를 제어해서 만들어진 수많은 애플리케이션들이 폭발적으로 증가하게 됩니다 그리고 지금은 스마트폰 뿐만 아니라 수 많은 디바이스들 예를 들면 보일러 또는 자동차 또는 우리 집에 있는 현관문 심지어 우리가 아주 하찮게 생각하는 전구 조차도 인터넷에 연결되서 동시에 프로그래밍을 통해서 우리가 제어할 수 있는 API를 제공하고 있다라는 겁니다 그래서 제가 생각하기에 지금 우리가 살고 있는 시대에 아주 중요한 주목할 만한 변화는 크게 두 가지 입니다 하나는 “API가 폭발적으로 증가했다“라는 것이고 또 하나는 "과거에 비해서 훨씬 더 사용하기 좋고 과거에 비해서 훨씬 더 인간 친화적인 프로그래밍 언어가 등장하고 있다”라는 것이죠

이런 맥락에서 우리가 어떻게 프로그래밍이라고하는 분야에 접근할 것인가라고하는 그런 고민들을 아마 가지고 계실 것 입니다 저도 사실가지고 있는데 이에 대한 저의 주관적인 생각은 제가 시간이 좀 많이됐기 때문에 다음 영상에서 이야기해 보겠습니다

PHP tutorial in Hindi part – 15 – PHP File Stystem | fopen, fclose, fwrite Functions

PHP 파일 시스템 파일 열기 fopen () 통사론 오프닝 모드 r 모드 읽기 전용 파일 r + 모드 읽기 및 쓰기 모두를위한 파일 열기 w 모드 쓰기 전용 모드 내용을 덮어 쓰다 파일이 존재하지 않는다면 서버에 새 파일을 만듭니다

w + 모드 모드 + 모드 x 모드 x + 모드 파일 내용 읽기 프로그램 예제 파일 함수 읽기 readfile () 프로그램 예제 file_get_contents () 함수 프로그램 예제 file () 함수 예제 파일 내용 쓰기 fwrite () 함수 fwrite () 함수 구문 fwrite () 함수 프로그램 예제 file_put_contents () 함수 file_get_contents () 함수 프로그램 예제 파일 이름 바꾸기 rename () 함수 파일 프로그램 예제의 이름 바꾸기 파일 제거 : unlink () 함수 unlink () 함수 프로그램 예제 제발, 공유 및 구독자처럼