เป็นไปได้ไหมที่จะใช้ภาษาการเขียนโปรแกรมที่เว็บไซต์ใช้?


48

ตัวอย่างเช่นหากstackexchange.comไม่มีการขอข้อมูลจากเจ้าของเว็บไซต์หรือ Google เกี่ยวกับการพัฒนาเว็บไซต์เป็นไปได้หรือไม่ที่จะทราบว่าใช้ภาษาใดในส่วนหลัง

ดูเหมือนว่าเว็บไซต์ไม่มี.extensionแถบตัวอย่างเช่น.phpที่สามารถระบุได้ว่ามีการพัฒนาอะไรPHPแต่ไม่มีส่วนขยายฉันจะรู้ได้อย่างไร


43
ควรสังเกตว่าส่วนขยายของไฟล์ที่ร้องขอโดย URL ไม่จำเป็นต้องจับคู่กับไฟล์ในระบบไฟล์โดยตรง หนึ่งสามารถแมปส่วนขยายได้อย่างง่ายดายเหมือนกับ.phpCGI-Script ที่เขียนใน C หรือ Servlet ที่เขียนด้วย Java
maple_shaft

1
@Jeroen ชุมชนวิกิพีเดียจะไม่ควรที่จะนำมาใช้เป็นคุณเสนอ ฉันรู้ว่ามันถูกทารุณกรรมโดยทั่วไปเช่นนี้ในอดีต แต่เราจะพยายามลืมเรื่องนั้น ...
yannis

6
พูดอย่างเคร่งครัดเป็นไปไม่ได้ ภาษาส่วนใหญ่สามารถเลียนแบบภาษาอื่นได้อย่างสมบูรณ์ - รวมถึงสัญญาณ "บอกเล่า" ที่คุณอาจกำลังมองหา
emory

2
จากมุมมองที่ไร้เดียงสาของฉันฉันไม่เห็นแอปพลิเคชันของข้อมูลนี้ คุณจะทำอย่างไรกับข้อมูลนี้?
tehnyit

5
นอกจากนี้การค้นหาไซต์ที่เสี่ยงต่อการถูกโจมตี
Erik Reppen

คำตอบ:


82

มีตัวบ่งชี้ บางคนหาได้ง่ายกว่าคนอื่นยากกว่า

  • นามสกุลไฟล์: .phpระบุว่าเว็บไซต์เขียนเป็น PHP, .aspบ่งชี้คลาสสิ ASP, .aspxบ่งชี้ ASP.NET, .jspบ่งชี้ Java JSPs, ...
  • ชื่อคุกกี้: JSESSIONIDเป็นชื่อคุกกี้ที่ใช้กันอย่างแพร่หลายในเซิร์ฟเวอร์ Java
  • ส่วนหัว: บางระบบเพิ่มส่วนหัว HTTP ในการตอบกลับของพวกเขา
  • เนื้อหา HTML เฉพาะ:
    • รูปแบบเช่น div-wrappers ที่มีโครงร่างการตั้งชื่อคลาสที่สอดคล้องกันซึ่งใช้โดย CMSes เช่น Drupal
    • ความคิดเห็นใน HTML หรือเมตาแท็กในส่วนหัวโดยตรง / โดยอ้อมแสดงถึงการใช้เครื่องมือ
  • ข้อความแสดงข้อผิดพลาดเริ่มต้นหรือการออกแบบหน้าข้อผิดพลาด (เช่นการส่ง URL ปลอมเพื่อดู 404)
  • บางครั้งแท็กความคิดเห็นจะถูกวางไว้ในหน้าเพื่อวัตถุประสงค์ในการกำหนดเวอร์ชันซึ่งให้เงื่อนงำ
  • ...

แต่สิ่งเหล่านี้สามารถลบ / เปลี่ยน / ปลอมได้ บางคนเปลี่ยนได้ง่ายกว่าคนอื่น ๆ แต่ไม่มีใครเชื่อถือได้ 100%

มีเหตุผลหลายประการในการเปลี่ยนตัวบ่งชี้เหล่านี้:

  • คุณเปลี่ยนเทคโนโลยีพื้นฐาน แต่ไม่ต้องการเปลี่ยน URL ของคุณ
  • คุณต้องการให้ข้อมูลเกี่ยวกับเทคโนโลยีของคุณให้น้อยที่สุด
  • (เกี่ยวข้องกับก่อนหน้านี้) คุณไม่ต้องการหยุดจุดแรกสำหรับสคริปต์ kiddie bus เมื่อค้นพบ / เผยแพร่ช่องโหว่ทั่วทั้งแพลตฟอร์ม
  • คุณต้องการที่จะดูเหมือน "ใน" (แม้ว่า 'แม้ว่าในปัจจุบันหมายถึงมี URL สไตล์ REST น้อยกว่าส่วนขยาย)
  • ...

11
เทียบเท่า PHP เพื่อเป็นJSESSIONID PHPSESSID
yannis

6
มีเครื่องมือมากมายในการทำการวิเคราะห์ตัวอย่างเช่นwappalyzer.com
user123444555621

1
เพิ่งทดสอบ wappalyzer บนเว็บไซต์ Django สิ่งเดียวที่ตรวจพบคือ JQuery และ Google Analytics และเว็บไซต์ PHP ที่มีกรอบการทำงานภายในซึ่งตรวจพบอะไรเลย
vartec

ละเอียดเกินไปที่จะเพิ่มคำตอบของฉันเอง ฉันจะเพิ่มรูปแบบ HTML (โดยเฉพาะอย่างยิ่ง CMSes มักจะเพิ่ม wrappers ขยะจำนวนมากที่มีชื่อคลาสอย่างสม่ำเสมอ) และเครื่องมือ (ส่วนใหญ่เส็งเคร็ง) จำนวนมากที่ต้องการประกาศว่าพวกเขาถูกใช้ในเมตาแท็ก (เช่นความเห็น แต่นั่น ถูกกล่าวถึง)
Erik Reppen

1
@OP ฉันจะกำหนดเป้าหมายคุกกี้เซสชันเป็นวิธีแรกในการลองและแยกแยะสิ่งที่มีการใช้งานในระบบอัตโนมัติ นั่นเป็นสิ่งหนึ่งที่เฟรมเวิร์กที่เห็นได้ชัดน้อยกว่ามีแนวโน้มที่จะแสดงอย่างสม่ำเสมอ แต่อย่างที่กล่าวไปแล้วไม่มีอะไรน่าเชื่อถือ 100%
Erik Reppen

8

มีไฟล์ human.txt ที่นักพัฒนาสามารถวางบนโดเมนที่ให้ข้อมูลบางอย่างเกี่ยวกับการพัฒนาไซต์บางทีใครที่ทำงานกับมันและใช้มาตรฐานหรือเครื่องมือใดบ้าง หากพวกเขาต้องการให้คุณรู้เกี่ยวกับข้อมูลประเภทนั้นพวกเขาสามารถ / ควรนำไปไว้ที่นั่น อย่างไรก็ตามเช่นเดียวกับสิ่งอื่นนี้เป็นทางเลือกดังนั้นจึงไม่สามารถรับประกันได้ว่าจะแจ้งให้คุณทราบ ตรวจสอบhuman.text


4

ไม่มันอาจเป็นเรื่องยากหากไม่สามารถทำได้หากผู้ดูแลเว็บไม่ต้องการเปิดเผย มีคุณสมบัติบางอย่างของกรอบงานไม่กี่ตัว แต่สามารถซ่อนได้

  • นามสกุลไฟล์: ไม่มีเหตุผลที่แท้จริงที่จะใช้ไฟล์มาตรฐานและ MVC ที่ทันสมัยส่วนใหญ่ใช้การกำหนดเส้นทาง URL อย่างไรก็ตาม ดังนั้นหากเว็บไซต์ไม่ได้อยู่พักหนึ่งคุณอาจไม่เห็นเลย (เช่น stackexchange ไม่ได้ใช้.aspxส่วนขยาย)

  • รหัสเซสชัน: ยกตัวอย่างเช่นPHPSESSIDเป็นค่าเริ่มต้นสำหรับ PHP แต่สามารถแทนที่ได้อย่างง่ายดาย ;

  • ส่วนหัวที่มีเว็บเซิร์ฟเวอร์และรุ่นภาษาสคริปต์: สามารถปิดหรือปลอมได้

สิ่งที่ยากต่อการซ่อน:

  • PHP จัดการค่าหลายค่าสำหรับตัวแปรสตริงข้อความค้นหาเดียวกันโดยต่อท้าย[]ชื่อดังนั้นคุณจะเห็นสิ่ง...?var[]=1&var[]=3&...ต่อไปนี้: AFAIK เป็นเว็บเฟรมเวิร์กเดียวที่จัดการด้วยวิธีนี้

คุณกำลังเรียก PHP ว่าเป็นเว็บเฟรมเวิร์กหรือไม่? มันขึ้นเป็นภาษาทัวริงสมบูรณ์ที่สามารถใช้ในการทำมากกว่าสิ่งที่เว็บ (แม้ว่ามันมักจะไม่ได้ใช้เช่น)
sakisk

@faif: ในสตริงการแยกวิเคราะห์ภาษาอื่น ๆ เป็นส่วนหนึ่งของกรอบงานเว็บ แม้แต่ Rasmus Lerdorf ก็ถือว่า PHP นั้นเป็นเว็บเฟรมเวิร์ก คุณรู้ดีกว่าแล้วผู้เขียน?
vartec

นั่นคือสิ่งที่เขามีอยู่ในใจในตอนแรก แต่ฉันคิดว่า PHP สามารถทำได้มากกว่านี้ เพื่อความถูกต้องฉันจะไม่เรียก PHP เป็นเว็บเฟรมเวิร์ก ในกรณีนี้ CakePHP, codeigniter, อื่น ๆ คืออะไร? กรอบเว็บของกรอบเว็บหรือไม่ :)
sakisk

1
ฉันไม่เข้าใจคุณ PHP เป็นภาษาที่มีฟังก์ชั่นหลักของเว็บเฟรมเวิร์กที่ฝังอยู่ในภาษานั้น ๆ จัดการกับมัน
vartec

4

กล่าวโดยย่อ: เป็นไปได้ที่จะซ่อนภาษาที่คุณใช้ในส่วนท้าย ตัวอย่างเล็กน้อย: พิจารณาหน้า "Hello World" เป็นเรื่องยากมากที่จะเข้าใจว่าเฟรมเวิร์ก / ภาษาใดถูกใช้ในส่วนหลัง (สมมติว่าสิ่งพื้นฐานเช่นคุกกี้เซสชันถูกตั้งค่าด้วยตนเองหรือไม่ได้ใช้งาน)

อย่างไรก็ตามจุดประสงค์ของเฟรมเวิร์กคือการช่วยให้คุณไม่ต้องใช้ฟังก์ชันการทำงานอีกครั้งและเพื่อให้คุณทำงานได้อย่างเป็นมาตรฐาน กรอบการทำงานเกือบทั้งหมดมีนิทานตัวน้อยที่เฉพาะเจาะจงซึ่งจะให้พวกเขาไปหากคุณดูใกล้พอ ตามที่คนอื่น ๆ ได้ชี้ให้เห็นมันเป็นไปได้ที่จะพยายามซ่อนสิ่งเหล่านี้โดยใช้การกำหนดค่าหรือการนำคุณสมบัติมาตรฐานต่างๆมาใช้อีกครั้ง อย่างไรก็ตามฉันขอยืนยันว่าสำหรับไซต์ขนาดใหญ่มันเป็นเรื่องยากอย่างยิ่งที่จะซ่อนทุกอย่างอย่างสมบูรณ์และแม้ว่าคุณจะทำสำเร็จแล้วคุณก็ใช้กรอบงานของคุณน้อยมาก

โดยสรุปฉันพูดได้ว่าเกือบจะเป็นไปได้ที่จะได้ความคิดที่ดีมากเกี่ยวกับสิ่งที่ถูกใช้ภายใต้ ซ่อนกรอบที่ใช้เป็นไปได้ แต่กลายเป็นไปไม่ได้อย่างรวดเร็วสำหรับเว็บไซต์ขนาดใหญ่

คำตอบก่อนหน้ามีตัวอย่างที่ดีของนิทานต่างๆที่กรอบและภาษามี ฉันต้องการเพิ่มว่าวิวเอ็นจิ้นต่าง ๆ มีพฤติกรรมที่เกี่ยวข้องกับช่องว่างที่เฉพาะเจาะจงซึ่งสามารถใช้เพื่อระบุพวกเขา เครื่องยนต์มีดโกนที่ใช้ใน MVC3 + มีนิสัยแปลก ๆ บางอย่างที่สามารถใช้เพื่อระบุตัวตนหรืออย่างน้อยก็แคบลงในรายการผู้ต้องสงสัย


4

ผมไม่ทราบว่านี้เฉพาะตอบคำถามของคุณ แต่มีเครื่องมือที่เป็นประโยชน์จริงๆกับผม: Wappalyzer มันเป็นส่วนเสริมของ Firefox / Chrome ที่เปิดโปงเทคโนโลยีที่ใช้ในเว็บไซต์ ตรวจพบระบบการจัดการเนื้อหาเว็บเซิร์ฟเวอร์เฟรมเวิร์ก JavaScript เครื่องมือวิเคราะห์และอื่น ๆ อีกมากมาย ฉันรู้ว่าไม่ตรงกับสิ่งที่คุณกำลังมองหา แต่มันให้ความคิดอย่างใกล้ชิดกับสิ่งที่เว็บไซต์ใช้ นี่คือสิ่งที่มันแสดงให้เห็นสำหรับ programmers.stackexchange.com

Wappalyzer


ฉันเยี่ยมชมบล็อกของฉันและมันบอกว่า Apache 2 / PHP 5.5.9 แต่ฉันค่อนข้างแน่ใจว่ามันเป็นบล็อก ASP.NET MVC ของคุณเองเพราะฉันทำขึ้นมา เพราะด้วยเหตุผลการหมุนรอบฉันได้เปลี่ยนหัวข้อการตอบสนอง 'X-Powered-By: ASP.NET' เป็น PHP
ลาร์ส

1

มีความเป็นไปได้ที่จะเขียนเว็บไซต์ในลักษณะที่ว่าลูกค้าจะไม่เห็นเบาะแสเกี่ยวกับเทคโนโลยีเซิร์ฟเวอร์

อย่างไรก็ตามเมื่อมีคนใช้เฟรมเวิร์กบางอย่างเช่นIceFacesสำหรับJavaมันเป็นไปไม่ได้ที่จะทำเพราะคุณจะเห็นสิ่งนั้นในคำขอของคุณ:

ice.submit.partial=true&ice.session=c4f4jxT36tM_38848488&ice.view=3&ice.focus=&rand=0.322803445

เฟรมเวิร์กอื่น ๆ ส่วนใหญ่มีตราประทับลักษณะของมันในเนื้อความของหน้าหรือร้องขอ / ตอบกลับ ค้นหา google และคุณจะได้คำตอบ

อย่างไรก็ตามในแต่ละภาษาหากคุณเลือกที่จะสร้าง HTML ตั้งแต่เริ่มต้น (ในโลกของ Java ตัวอย่างจะเป็นเทมเพลตความเร็ว ) หรือเลือกวิธี AJAX ล้วนๆโดยที่เซิร์ฟเวอร์คืนค่า / รับเฉพาะข้อความ JSON เท่านั้นและไคลเอนต์ทั้งหมดอยู่ใน JavaScript - ยาก จนกว่าคุณจะเกิดข้อยกเว้นที่ไม่ตรงกันซึ่งเผยให้เห็นเทคโนโลยีภายใต้


0

ในเว็บไซต์ที่ใช้เฟรมเวิร์กแบบเต็มหรือ CMS บางครั้งคุณสามารถลองสอบถามหน้าผู้ดูแลระบบคุณจะเห็นกล่องล็อกอินและระบุเฟรมเวิร์กที่มาจากเพราะคนส่วนใหญ่ไม่ได้ทำการรีเท็มเพลตผู้ดูแลระบบ ตัวอย่างเช่นหากไซต์ของคุณคือ example.com ลองไปที่ example.com/admin/ หรือ example.com/wp-admin/ (wordpress)



-5

ไม่ไม่สามารถค้นหาภาษาที่ใช้ในเว็บไซต์โดยดูซอร์สโค้ดของหน้าเว็บและค้นหาการมีอยู่ของภาษา เนื่องจากมีการใช้งานมากกว่าหนึ่งภาษาในการสร้างเว็บไซต์เพื่อให้มีความปลอดภัยสูง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.