คำถามติดแท็ก security

หัวข้อที่เกี่ยวข้องกับความปลอดภัยของแอปพลิเคชันและการโจมตีซอฟต์แวร์ โปรดอย่าใช้แท็กนี้เพียงอย่างเดียวซึ่งส่งผลให้เกิดความกำกวม หากคำถามของคุณไม่เกี่ยวกับปัญหาการเขียนโปรแกรมที่เฉพาะเจาะจงโปรดลองถามคำถามที่ Information Security SE: https://security.stackexchange.com แทน

3
เชื่อถือ $ _SERVER ['REMOTE_ADDR'] ได้หรือไม่
เชื่อถือได้ปลอดภัย$_SERVER['REMOTE_ADDR']หรือไม่? สามารถทดแทนได้โดยการเปลี่ยนส่วนหัวของคำขอหรืออะไรทำนองนั้น? มันปลอดภัยไหมที่จะเขียนอะไรแบบนั้น? if ($_SERVER['REMOTE_ADDR'] == '222.222.222.222') { // my ip address $grant_all_admin_rights = true; }

5
ขั้นตอน OAuth 2.0 ที่เหมาะสมสำหรับแอปบนอุปกรณ์เคลื่อนที่คืออะไร
ฉันพยายามใช้การให้สิทธิ์ที่ได้รับมอบหมายใน Web API สำหรับแอปบนอุปกรณ์เคลื่อนที่โดยใช้ OAuth 2.0 ตามข้อกำหนดขั้นตอนการให้สิทธิ์โดยนัยไม่สนับสนุนโทเค็นการรีเฟรชซึ่งหมายความว่าเมื่อมีการให้โทเค็นการเข้าถึงในช่วงเวลาหนึ่งผู้ใช้จะต้องให้สิทธิ์แก่แอปอีกครั้งเมื่อโทเค็นหมดอายุหรือถูกเพิกถอน ฉันเดาว่านี่เป็นสถานการณ์ที่ดีสำหรับโค้ดจาวาสคริปต์ที่ทำงานบนเบราว์เซอร์ตามที่ระบุไว้ในข้อกำหนด ฉันพยายามลดเวลาที่ผู้ใช้ต้องให้สิทธิ์แก่แอปเพื่อรับโทเค็นดังนั้นดูเหมือนว่าขั้นตอนรหัสการอนุญาตจะเป็นตัวเลือกที่ดีเนื่องจากรองรับโทเค็นการรีเฟรช อย่างไรก็ตามขั้นตอนนี้ดูเหมือนจะต้องอาศัยเว็บเบราว์เซอร์เป็นอย่างมากในการดำเนินการเปลี่ยนเส้นทาง ฉันสงสัยว่าขั้นตอนนี้ยังคงเป็นตัวเลือกที่ดีสำหรับแอปบนอุปกรณ์เคลื่อนที่หรือไม่หากใช้เว็บเบราว์เซอร์ในตัว หรือควรไปตามกระแสโดยปริยาย?

3
วิธีการรักษาความปลอดภัยบริการเว็บ RESTful?
ฉันมีการดำเนินการรักษาความปลอดภัยบริการเว็บสงบ ฉันได้หาข้อมูลโดยใช้ Google แล้ว แต่ฉันติดขัด ตัวเลือก: TLS (HTTPS) + HTTP พื้นฐาน (pc1oad1etter) HTTP Digest OAuth สองทาง แนวทางที่อิงตามคุกกี้ ใบรับรองลูกค้า (Tom Ritter และที่นี่ ) คำขอที่ลงชื่อโดยใช้HMACและอายุการใช้งานที่ จำกัด มีตัวเลือกอื่น ๆ ที่เป็นไปได้ให้พิจารณาหรือไม่? ถ้า OAuth แล้วรุ่นอะไร มันสำคัญหรือไม่? จากสิ่งที่ผมได้อ่านเพื่อให้ห่างไกลOAuth 2.0พร้อมด้วยสัญญาณถือ (ที่ไม่มีลายเซ็น) ดูเหมือนว่าจะไม่ปลอดภัย ฉันได้พบบทความที่น่าสนใจอีกมากในการตรวจสอบส่วนที่เหลือตาม รักษาความปลอดภัย REST API ของคุณ ... วิธีที่ถูกต้อง

14
เทคนิคในการปิดบังสตริงที่ละเอียดอ่อนใน C ++
ฉันต้องการจัดเก็บข้อมูลที่ละเอียดอ่อน (คีย์เข้ารหัสแบบสมมาตรที่ฉันต้องการเก็บไว้เป็นส่วนตัว) ในแอปพลิเคชัน C ++ ของฉัน วิธีง่ายๆคือทำสิ่งนี้: std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess"; อย่างไรก็ตามการเรียกใช้แอปพลิเคชันผ่านstringsกระบวนการ (หรืออื่น ๆ ที่แยกสตริงจากแอปไบนารี) จะเปิดเผยสตริงด้านบน ควรใช้เทคนิคใดในการปิดบังข้อมูลที่ละเอียดอ่อนดังกล่าว แก้ไข: โอเคคุณทุกคนบอกว่า"ไฟล์ปฏิบัติการของคุณสามารถย้อนกลับทางวิศวกรรมได้"แน่นอน! นี่เป็นสัตว์เลี้ยงของฉันดังนั้นฉันจะคุยโวสักหน่อยที่นี่: เหตุใด 99% (โอเคดังนั้นบางทีฉันพูดเกินจริงเล็กน้อย) ของคำถามเกี่ยวกับความปลอดภัยทั้งหมดในไซต์นี้ได้รับคำตอบพร้อมกับฝนตกหนักว่า "ไม่มีวิธีที่เป็นไปได้ในการสร้างโปรแกรมที่ปลอดภัยอย่างสมบูรณ์แบบ" ซึ่งไม่เป็นประโยชน์ ตอบ! ความปลอดภัยเป็นระดับเลื่อนระหว่างการใช้งานที่สมบูรณ์แบบและไม่มีการรักษาความปลอดภัยที่ปลายด้านหนึ่งและความปลอดภัยที่สมบูรณ์แบบ แต่ไม่มีการใช้งานที่อื่น ประเด็นคือคุณเลือกตำแหน่งของคุณบนสเกลเลื่อนนั้นขึ้นอยู่กับสิ่งที่คุณพยายามทำและสภาพแวดล้อมที่ซอฟต์แวร์ของคุณจะทำงาน ฉันไม่ได้เขียน app สำหรับการติดตั้งทางทหารผมเขียน app สำหรับคอมพิวเตอร์ที่บ้าน ฉันต้องการเข้ารหัสข้อมูลในเครือข่ายที่ไม่น่าเชื่อถือด้วยคีย์การเข้ารหัสที่รู้จักกันดี ในกรณีเหล่านี้ "การรักษาความปลอดภัยผ่านความสับสน" น่าจะดีพอ! แน่นอนว่าใครบางคนที่มีเวลาพลังงานและทักษะเพียงพอสามารถทำวิศวกรรมย้อนกลับไบนารีและค้นหารหัสผ่านได้ แต่เดาอะไร? ฉันไม่สนใจ: เวลาที่ฉันใช้ในการติดตั้งระบบรักษาความปลอดภัยชั้นยอดนั้นแพงกว่าการสูญเสียยอดขายเนื่องจากเวอร์ชันที่แตก (ไม่ใช่ว่าฉันขายสิ่งนี้จริงๆ แต่คุณเข้าใจ) ท้องฟ้าสีครามนี้ "ให้มันเป็นวิธีที่ดีที่สุดเท่าที่จะเป็นไปได้" แนวโน้มในการเขียนโปรแกรมในหมู่โปรแกรมเมอร์มือใหม่นั้นเป็นเรื่องโง่ที่จะพูดน้อยที่สุด ขอขอบคุณที่สละเวลาตอบคำถามนี้ซึ่งเป็นประโยชน์มากที่สุด น่าเสียดายที่ฉันยอมรับคำตอบได้เพียงคำตอบเดียว …

2
สิทธิ์ EXECUTE ถูกปฏิเสธในประเภทตารางที่ผู้ใช้กำหนด?
ฉันมีคำถามเกี่ยวกับประเภทตารางที่ผู้ใช้กำหนดใน SQL Server 2008 สำหรับความต้องการของหนึ่งในแอปพลิเคชัน ASP.NET เราได้กำหนดชนิดตารางของเราเองบน SQL Server 2008 เพื่อใช้เป็นพารามิเตอร์ในโพรซีเดอร์ที่เก็บไว้ (เมื่อเรียกใช้คำสั่ง sql ในแอปพลิเคชัน ASP.NET เราจะส่งวัตถุ DataTable เป็นพารามิเตอร์สำหรับกระบวนงานที่เก็บไว้ดูตัวอย่างที่นี่ ) ปัญหาคือเมื่อเราเรียกใช้คำสั่ง Sql (ดำเนินการขั้นตอนที่เก็บไว้) จาก ASP.NET เราได้รับข้อผิดพลาด: สิทธิ์ดำเนินการถูกปฏิเสธในวัตถุ 'ourTableType', ฐานข้อมูล 'ourDatabase', สคีมา 'ourSchema' เหตุผลที่เป็นเช่นนั้น? เหตุใดเราจึงต้องกำหนดสิทธิ์ในประเภทตารางที่ผู้ใช้กำหนด เหตุใดจึงไม่เพียงพอที่จะตั้งค่าสิทธิ์ในกระบวนงานที่เก็บไว้ซึ่งใช้งานได้ และถ้าเราจะต้องตั้งมันไม่ว่าอะไรทำไมไม่มีEXECUTEประเภทสิทธิ์ในการตั้งค่าในหน้าต่างคุณสมบัติใด ๆ (ผมสามารถมองเห็นเพียงControl, References, Take Ownership, View Definition)? สิ่งที่ฉันไม่เข้าใจคือการตั้งค่าสิทธิ์Controlในหน้าต่างคุณสมบัติช่วยแก้ปัญหาได้และขั้นตอนที่เก็บไว้จะทำงานโดยไม่มีปัญหา

5
จะตรวจสอบข้อมูลรับรองโดเมนได้อย่างไร?
ฉันต้องการตรวจสอบความถูกต้องของชุดข้อมูลรับรองกับตัวควบคุมโดเมน เช่น: Username: STACKOVERFLOW\joel Password: splotchy วิธีที่ 1. สืบค้น Active Directory ด้วยการแอบอ้างบุคคลอื่น ผู้คนจำนวนมากแนะนำให้ค้นหา Active Directory สำหรับบางสิ่ง หากเกิดข้อยกเว้นแสดงว่าคุณทราบว่าข้อมูลรับรองไม่ถูกต้องตามที่แนะนำในคำถาม stackoverflowนี้ อย่างไรก็ตามมีข้อเสียที่ร้ายแรงบางประการสำหรับแนวทางนี้ : คุณไม่เพียง แต่ตรวจสอบสิทธิ์บัญชีโดเมนเท่านั้น แต่คุณกำลังทำการตรวจสอบการอนุญาตโดยปริยายด้วย นั่นคือคุณกำลังอ่านคุณสมบัติจาก AD โดยใช้โทเค็นการเลียนแบบ จะเกิดอะไรขึ้นถ้าบัญชีอื่นที่ถูกต้องไม่มีสิทธิ์อ่านจาก AD? โดยค่าเริ่มต้นผู้ใช้ทุกคนมีสิทธิ์ในการอ่าน แต่สามารถตั้งค่านโยบายโดเมนเพื่อปิดใช้งานสิทธิ์การเข้าถึงสำหรับบัญชีที่ถูก จำกัด (และหรือกลุ่ม) การเชื่อมโยงกับ AD มีค่าใช้จ่ายที่ร้ายแรงแคชสกีมาของ AD จะต้องถูกโหลดที่ไคลเอนต์ (แคช ADSI ในตัวให้บริการ ADSI ที่ใช้โดย DirectoryServices) นี่เป็นทั้งเครือข่ายและเซิร์ฟเวอร์ AD ซึ่งสิ้นเปลืองทรัพยากรและมีราคาแพงเกินไปสำหรับการดำเนินการง่ายๆเช่นการตรวจสอบบัญชีผู้ใช้ คุณอาศัยความล้มเหลวของข้อยกเว้นสำหรับกรณีที่ไม่พิเศษและสมมติว่านั่นหมายถึงชื่อผู้ใช้และรหัสผ่านไม่ถูกต้อง ปัญหาอื่น ๆ (เช่นความล้มเหลวของเครือข่ายความล้มเหลวในการเชื่อมต่อ …

6
ฉันจะป้องกันชื่อผู้ใช้และรหัสผ่าน MySQL จากการถอดรหัสได้อย่างไร
.classไฟล์Java สามารถถอดรหัสได้ค่อนข้างง่าย ฉันจะป้องกันฐานข้อมูลของฉันได้อย่างไรหากต้องใช้ข้อมูลล็อกอินในรหัส

10
วิธีเปิดใช้งานการป้องกัน DDoS
DDoS (Distributed Denial of Service Attacks) มักถูกบล็อกในระดับเซิร์ฟเวอร์ใช่ไหม มีวิธีบล็อกในระดับ PHP หรืออย่างน้อยก็ลดได้หรือไม่? ถ้าไม่วิธีใดที่เร็วที่สุดและใช้บ่อยที่สุดในการหยุดการโจมตี DDoS

11
เหตุใดยาดมจึงทำให้การโจมตีด้วยพจนานุกรมเป็นไปไม่ได้
อัปเดต: โปรดทราบว่าฉันไม่ได้ถามว่าเกลือคืออะไรตารางสายรุ้งคืออะไรการโจมตีตามพจนานุกรมคืออะไรหรือวัตถุประสงค์ของเกลือคืออะไร ฉันกำลังสอบถาม: หากคุณรู้จักผู้ใช้เกลือและแฮชการคำนวณรหัสผ่านของพวกเขาไม่ใช่เรื่องง่ายหรือ? ฉันเข้าใจกระบวนการและนำไปใช้ด้วยตนเองในบางโครงการของฉัน s = random salt storedPassword = sha1(password + s) ในฐานข้อมูลที่คุณจัดเก็บ: username | hashed_password | salt การใช้เกลือทุกครั้งที่ฉันเห็นจะเพิ่มเกลือที่ส่วนท้ายของรหัสผ่านหรือจุดเริ่มต้น: hashed_Password = sha1(s + password ) hashed_Password = sha1(password + s) ดังนั้นการโจมตีด้วยพจนานุกรมจากแฮกเกอร์ที่คุ้มค่ากับเกลือของเขา (ฮ่าฮ่า) จะเรียกใช้คำหลักแต่ละคำเทียบกับเกลือที่เก็บไว้ในชุดค่าผสมทั่วไปที่ระบุไว้ข้างต้น แน่นอนว่าการใช้งานที่อธิบายไว้ข้างต้นเป็นการเพิ่มขั้นตอนอื่นสำหรับแฮ็กเกอร์โดยไม่ได้แก้ปัญหาพื้นฐานจริงหรือ? มีทางเลือกใดบ้างในการแก้ไขปัญหานี้หรือฉันเข้าใจปัญหาผิด สิ่งเดียวที่ฉันคิดได้คือมีอัลกอริธึมการผสมที่เป็นความลับซึ่งผูกเกลือและรหัสผ่านเข้าด้วยกันในรูปแบบสุ่มหรือเพิ่มช่องผู้ใช้อื่น ๆ ในกระบวนการแฮชซึ่งหมายความว่าแฮ็กเกอร์จะต้องเข้าถึงฐานข้อมูลและรหัสเพื่อทำการปัก สำหรับการโจมตีพจนานุกรมเพื่อพิสูจน์ว่ามีผล (อัปเดตตามที่ระบุไว้ในความคิดเห็นควรถือว่าแฮ็กเกอร์สามารถเข้าถึงข้อมูลทั้งหมดของคุณได้ดังนั้นจึงอาจไม่ดีที่สุด) ให้ฉันยกตัวอย่างวิธีที่ฉันเสนอให้แฮ็กเกอร์แฮ็กฐานข้อมูลผู้ใช้ด้วยรายการรหัสผ่านและแฮช: ข้อมูลจากฐานข้อมูลที่ถูกแฮ็กของเรา: RawPassword (not stored) | Hashed | …

7
สุ่มหมายเลขในช่วง [ต่ำสุด - สูงสุด] โดยใช้ PHP
มีวิธีสร้างตัวเลขสุ่มตามค่าต่ำสุดและสูงสุดหรือไม่? ตัวอย่างเช่นหากขั้นต่ำคือ 1 และสูงสุด 20 ควรสร้างตัวเลขใด ๆ ระหว่าง 1 ถึง 20 รวมทั้ง 1 และ 20?
84 php  security  random 

1
จะตรวจสอบ CRL และ OSCP เพื่อทำงานบน iOS ได้อย่างไร
ฉันไม่สามารถให้ CRL ทำงานบน iOS ได้ ฉันสร้างกรณีทดสอบสองกรณี ฉันมีใบรับรองที่ถูกต้องออกโดย CA ฉันมีใบรับรองอื่นที่ถูกต้องออกโดย CA แต่ CA ได้เพิ่มใบรับรองนั้นใน CRL ฉันตั้งค่านโยบายการเพิกถอนที่เปิดใช้งานการตรวจสอบ CRL และต้องการให้สำเร็จ func crlValidationTest(trustedCert: SecCertificate, certToVerify: SecCertificate) -> Bool { let basicPolicy = SecPolicyCreateBasicX509() let crlPolicy = SecPolicyCreateRevocation(kSecRevocationOCSPMethod | kSecRevocationCRLMethod | kSecRevocationRequirePositiveResponse)! var trust: SecTrust? SecTrustCreateWithCertificates(NSArray(object: certToVerify), NSArray(objects: basicPolicy, crlPolicy), &trust) SecTrustSetAnchorCertificates(trust!, NSArray(object: trustedCert)) SecTrustSetNetworkFetchAllowed(trust!, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.